c++ - 在 C++ 中,指针是否保证在 `delete` 之后保留其值?

标签 c++ pointers delete-operator

灵感来自 this question .

假设在 C++ 代码中我有一个有效的指针并正确地 delete 它。根据 C++ 标准,指针将变为无效(3.7.3.2/4 - 释放函数将使引用所有已释放存储部分的指针无效)。

至少在大多数实现中,它会保留值并存储与 delete 之前完全相同的地址,但是 using the value is undefined behavior .

标准是否保证指针将保留其值,或者该值是否允许更改?

最佳答案

不,不能保证,实现可以合法地将零分配给 deletelvalue 操作数。

Bjarne Stroustrup 曾希望实现会选择这样做,但没有多少人这样做。

http://www.stroustrup.com/bs_faq2.html#delete-zero

关于c++ - 在 C++ 中,指针是否保证在 `delete` 之后保留其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002055/

相关文章:

c++ - 使用另一个指针在 `delete` 拥有的对象上调用 `unique_ptr`

c++ - 通过另一个指针删除指向类中多维数组的指针 - 如何?

C++98 从运算符获取提升结果

c - 传入指向整数指针的指针时的斐波那契数列

c++ - 从 'void*' 到类的无效转换 (c++)

c - 如何查看结构体指针中的结构体是否包含元素

c++ - 有没有办法让一组未初始化的类在调用 delete[] 时不会被破坏?

c++ - 在 C++ Win32 客户端/框架区域中进行图形和绘图

c++ - 在多个 '\0' 个字符处拆分一个 char*

c++ - 带有多重警报算法的闹钟C++