我们应该在使用后将每个原始指针清空吗?
Should we NULL every raw pointer after it is used?
int *a;
if (true)
*a = 2;
else
*a = 3;
如您所见,a
不是动态分配的指针。我应该在退出前将它分配给 nullptr
吗? unique_ptr
会自动为我做吗? a
指向的内存指针呢?如果我在 a
超出范围之前将其设置为 null,是否会导致内存泄漏?
int *a;
if (true)
*a = 2;
此程序的行为未定义。 a
没有有效的指针值,因此您不能间接通过。
Should we NULL every raw pointer after it is used?
视情况而定。比如指针的生命周期快要结束了,那么赋值给null就多余了。
Does unique_ptr do for me automatically?
unique_ptr 不是原始指针。
但是不,unique_ptr无法知道你是否已经停止使用它,所以当你停止使用它时它不能将自己设置为空。
If I null a before it goes out of scope, will it cause a memory leak?
将指针设置为 null 与在指针超出范围之前不将其设置为 null 之间没有区别。
int *a;
if (true)
*a = 2;
else
*a = 3;
如您所见,a
不是动态分配的指针。我应该在退出前将它分配给 nullptr
吗? unique_ptr
会自动为我做吗? a
指向的内存指针呢?如果我在 a
超出范围之前将其设置为 null,是否会导致内存泄漏?
int *a; if (true) *a = 2;
此程序的行为未定义。 a
没有有效的指针值,因此您不能间接通过。
Should we NULL every raw pointer after it is used?
视情况而定。比如指针的生命周期快要结束了,那么赋值给null就多余了。
Does unique_ptr do for me automatically?
unique_ptr 不是原始指针。
但是不,unique_ptr无法知道你是否已经停止使用它,所以当你停止使用它时它不能将自己设置为空。
If I null a before it goes out of scope, will it cause a memory leak?
将指针设置为 null 与在指针超出范围之前不将其设置为 null 之间没有区别。