【发布时间】:2019-04-10 17:48:51
【问题描述】:
假设我们执行
malloc(4 * sizeof(int))
现在,数字 4 是一个常数,据我了解,sizeof 实际上是编译时函数(除非你在其中有一个变量)。
在这种情况下(考虑 x86)sizeof(int) 也是 4。我的问题是:gcc 优化会自己执行计算还是会在 asm 中生成方程?
【问题讨论】:
-
sizeof 始终是编译时的,VLA 的特殊情况除外。
-
sizeof不是函数,顺便说一句,它是关键字。 -
@Shawn it's an operator ;) 所以有人可能会说这是一种特殊的函数。
-
请选择 一种编程语言。我在注意到这一点之前回答了。这是C还是C++。已经有一个答案在 C++ 中是正确的,而在 C 中是错误的!
-
@BranislavBrzak 是的,这个问题的答案顺便说一句在 C 和 C++ 中几乎是相同的。但这不是一个好的借口!
标签: c++ c gcc optimization