相关疑难解决方法(0)

不评估应用sizeof的表达式使得在C++中取消引用sizeof内的null或无效指针是合法的吗?

首先,我已经看到了关于C99的这个问题,并且接受的答案参考操作数未在C99标准草案中评估.我不确定这个答案是否适用于C++ 03.还有一个关于C++的问题,引用了类似措辞的答案,并且在某些情况下,还会出现未评估的操作数.未评估未评估的操作数.措辞.

我有这个代码:

 int* ptr = 0;
 void* buffer = malloc( 10 * sizeof( *ptr ) );
Run Code Online (Sandbox Code Playgroud)

问题是 - 里面是否有空指针取消引用(以及UB)sizeof()

C++ 03 5.3.3/1表示sizeof运算符产生其操作数的对象表示中的字节数.操作数是表达式(未计算)或带括号的type-id.

链接到答案引用这个或类似的措辞,并使用"未评估"部分推断出没有UB.

但是,在这种情况下,我无法找到标准链接评估的确切位置与是否具有UB.

"不评估"应用sizeof的表达式使得在C++中取消引用sizeof中的null或无效指针是合法的吗?

c++ sizeof null-pointer undefined-behavior language-lawyer

13
推荐指数
2
解决办法
860
查看次数