C 编译器可以使用'new”优化堆内存分配吗?
优化堆内存分配
在 C 中,new 运算符通常用于在堆上分配内存。然而,问题就出现了:是否允许编译器优化这些堆内存分配。
优化的争论
根据 N3664:澄清内存分配,允许编译器围绕内存进行优化分配。这种优化基于“假设”规则,该规则规定,只要结果看起来好像满足了要求,实现就可以忽略要求。由于 new 可以抛出异常,一些人认为由于其可观察的行为,它无法被优化。
反驳:“假设”规则
然而,优化的支持者认为即使在这种情况下,“假设”规则也适用。他们认为编译器可以确定分配不会导致异常,并且省略新调用不会违反规则。此外,有人认为编译器可以证明替换全局运算符 new 不会影响可观察的行为,从而允许其执行优化。
变化和异常
虽然大多数编译器不会优化新的调用,存在一些例外。例如,Clang 已经实现了后来成为 C 14 一部分的优化。但是,在使用 new 的非抛出版本或可以替换运算符 new 的情况下,可能不会执行优化。
结论
编译器优化堆内存分配的能力是一个复杂的问题,对“as-if”规则的解释各不相同。虽然某些实现允许在某些条件下进行此类优化,但其他实现严格遵循标准并且不执行它。
以上是C 编译器可以使用'new”优化堆内存分配吗?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)