【发布时间】:2013-06-24 19:43:47
【问题描述】:
我可以像下面的代码一样使用smth吗:
int main()
{
int* foo = new int;
double* bar = reinterpret_cast<double*>(foo);
delete bar;
}
是UB吗?
我认为我们只需要为 operator new 返回的指针调用 operator delete,但是在这种情况下如何强制转换呢?
我认为它是 UB,因为 reinterpret_cast 不对结果指针提供任何保证。我说的对吗?
有人可以从标准中发布正确的报价吗?
【问题讨论】:
-
注意这里的UB在于delete表达式,而不是操作符delete。
-
好的,那么这里的 UB 呢?你能把标准的报价贴出来吗?
标签: c++