相关疑难解决方法(0)

指针是否保证在C++中的`delete`后保留其值?

灵感来自这个问题.

假设在C++代码中我有一个有效的指针并且正确delete.根据C++标准,指针将变为无效(3.7.3.2/4 - 解除分配函数将使所有指针无效,指向解除分配的存储的所有部分).

至少在大多数实现中,它保留了值并将存储与以前完全相同的地址delete,但是使用该值是未定义的行为.

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

c++ pointers delete-operator

16
推荐指数
2
解决办法
3198
查看次数

C++以及何时使用delete

我刚刚在C++上重读了一些代码(我现在正在学校学习Java),而且当我必须使用删除时,我有点困惑.

例如:声明两个对象时:

Fraction* f1;
Fraction* f2;
Run Code Online (Sandbox Code Playgroud)

并像这样创建f1和f2:

f1 = new Fraction(user_input1, user_input2);
f2 = new Fraction(user_input3, user_input4);
Run Code Online (Sandbox Code Playgroud)

下次我想使用newoperator创建一个新对象时,是否必须先删除?我很困惑,因为我习惯在java中使用垃圾收集器来处理对象及其删除.在重新使用新内容之前是否必须删除?

if (f1) delete f1;

if (f2) delete f2;

//initialize again...
Run Code Online (Sandbox Code Playgroud)

c++ new-operator delete-operator

9
推荐指数
4
解决办法
8459
查看次数

标签 统计

c++ ×2

delete-operator ×2

new-operator ×1

pointers ×1