¿Puede el compilador eliminar las asignaciones de memoria del montón?
en c, el nuevo operador se usa para asignar memoria en el montón. Los compiladores pueden optimizar el código, incluida la eliminación de declaraciones innecesarias. Los compiladores pueden eliminar las asignaciones de memoria del montón realizadas con el uso de nuevos?
Compilador Behavior
La investigación indica que los diferentes compiladores manejan las asignaciones de HEAP de manera diferente:
La validez de las optimizaciones del compilador es un tema de debate. Algunos argumentan que el compilador no puede optimizar nuevas llamadas, ya que pueden tener un comportamiento observable (por ejemplo, lanzar una excepción). Otros sostienen que se permite la optimización de nuevas llamadas si el compilador puede garantizar que ningún comportamiento observable se verá afectado.
c 14 estándar
n3664: Aclarar la asignación de memoria aclaró las reglas con respecto a las optimizaciones del compilador y la asignación de memoria. Permite a los compiladores optimizar alrededor de las asignaciones de memoria en ciertos escenarios. Sin embargo, la disposición ha sido criticada ya que potencialmente viola la causalidad.
consideraciones adicionales
sin tracción nueva
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3