может ли компилятор устранить распределения памяти кучи?
в C, новый оператор используется для распределения памяти на куче. Компиляторы могут оптимизировать код, включая удаление ненужных заявлений. Могут ли компиляторы устранить распределения памяти кучи, сделанные с использованием нового?
поведение компилятора
исследования указывают на то, что разные компиляторы обрабатывают распределения кучи по -разному:
достоверность оптимизации компилятора является предметом дебатов. Некоторые утверждают, что компилятору не разрешается оптимизировать новые вызовы, поскольку они могут иметь наблюдаемое поведение (например, бросая исключение). Другие утверждают, что оптимизация новых вызовов разрешена, если компилятор может гарантировать, что никакое наблюдаемое поведение не будет затронуто.
C 14 Standard
n3664: уточнение распределения памяти уточняло правила, касающиеся оптимизации компилятора и распределения памяти. Это позволяет компиляторам оптимизировать распределения памяти в определенных сценариях. Однако, это положение подвергалось критике, поскольку оно потенциально нарушает причинность.
дополнительные соображения
Заключение
]вывод
. В то время как некоторые компиляторы реализуют эту оптимизацию на основе N3664, его достоверность остается предметом обсуждения и зависит от конкретных обстоятельств, включая стандарт C и наличие пользовательских распределителей памяти.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3