首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运算符delete和转换

运算符delete和转换
EN

Stack Overflow用户
提问于 2013-06-24 19:20:50
回答 3查看 166关注 0票数 6

我可以像下面的代码一样使用smth吗:

代码语言:javascript
运行
复制
int main()
{
    int* foo = new int;
    double* bar = reinterpret_cast<double*>(foo);
    delete bar;
}

是UB吗?

我认为我们只需要为new返回的指针调用delete操作符,但在这种情况下强制转换又如何呢?

我认为它是UB,因为reinterpret_cast不会对结果指针提供任何保证。我说的对吗?

有没有人能贴出标准中的正确引述?

EN

Stack Overflow用户

回答已采纳

发布于 2013-06-24 19:28:12

§5.3.5/2“在第一种选择(delete对象)中,delete操作数的值可以是空指针值,指向由先前new表达式创建的非数组对象的指针,或指向表示此类对象基类的子对象(1.8)的指针(第10条)。如果不是,则行为未定义。”因为bar指向一个double,所以它不指向由前一个new-expression (创建了一个int)创建的对象。

票数 6
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17274236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档