代码:
#include<iostream>
using namespace std;
int main()
{
size_t i = sizeof new int;
cout<<i;
}
在GCC编译器中,代码可以正常运行且没有任何警告或错误,并打印输出8
。
但是,在clang编译器中,我收到了以下警告:
warning: expression with side effects has no effect in an unevaluated context [-Wunevaluated-expression]
size_t i = sizeof new int;
- 哪个是正确的?
sizeof new int;
是未定义行为吗?
sizeof malloc(some_value)
,它不会调用malloc()
函数,并且如果在#include <stdlib.h>
之后执行,则会得到与sizeof(void *)
相等的结果。 - Peter