我们应该在使用后将每个原始指针清空吗?

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 之间没有区别。