C++ 如何检查指针是否作为C++;是否已初始化?

C++ 如何检查指针是否作为C++;是否已初始化?,c++,pointers,dynamic-arrays,dynamic-allocation,C++,Pointers,Dynamic Arrays,Dynamic Allocation,我在一个类中有一个数据成员,它是指针。另外,我有一个setter函数来动态分配这个指针,比如说,为了动态数组的目的。在设置新值之前,我需要删除此指针以避免内存泄漏。我想知道如何检查此指针是否已初始化,以便在设置新值之前,如果它未初始化,我不需要删除指针的内存。您有两个选项。首先,您可以手动完成所有操作,并在构造函数中将其设置为nullptr。然后,在分配新内存之前,您可以检查它是否为nullptr,如果不是,则将其删除。我建议改为使用智能指针,如std::unique\u ptr。每次需要将其设

我在一个类中有一个数据成员,它是指针。另外,我有一个setter函数来动态分配这个指针,比如说,为了动态数组的目的。在设置新值之前,我需要删除此指针以避免内存泄漏。我想知道如何检查此指针是否已初始化,以便在设置新值之前,如果它未初始化,我不需要删除指针的内存。

您有两个选项。首先,您可以手动完成所有操作,并在构造函数中将其设置为
nullptr
。然后,在分配新内存之前,您可以检查它是否为
nullptr
,如果不是,则将其删除。我建议改为使用智能指针,如
std::unique\u ptr
。每次需要将其设置为新指针时,您都可以对其调用
reset
,而无需担心内存泄漏。它将确保删除以前分配的内存(如果有)。

您有两个选项。首先,您可以手动完成所有操作,并在构造函数中将其设置为
nullptr
。然后,在分配新内存之前,您可以检查它是否为
nullptr
,如果不是,则将其删除。我建议改为使用智能指针,如
std::unique\u ptr
。每次需要将其设置为新指针时,您都可以对其调用
reset
,而无需担心内存泄漏。它将确保删除以前分配的内存(如果有的话)。

在不使用时设置为
nullptr
,或者做一些正常的事情,只需使用
unique\u ptr
为您处理生命周期。顺便说一句,在
nullptr
上调用
delete
不会产生任何效果。您的意思是将成员的默认值设置为
nullptr
?我想知道这是如何在C++中完成的?只需在类内成员初始化、成员初始值设定项列表或构造函数体中将其设置为
nullptr
,如果使用
unique\u ptr
请确保使用声明为
std::unique\u ptr
T[]
变量,其中
T
是动态分配数组的类型。它在其内部指针上调用
delete[]
,就像你在数组中应该调用的那样。@jaggedSpire
std::unique_ptr
听起来不错,但只是想知道是否有性能成本(意味着降低速度)如果要使用这个神奇的
std::unique_ptr
,请在不使用时设置为
nullptr
,或者做一些理智的事情,只需使用
unique_ptr
即可为您处理生命周期。顺便说一句,在
nullptr
上调用
delete
不会产生任何效果。您的意思是将成员的默认值设置为
nullptr
?我想知道这是如何在C++中完成的?只需在类内成员初始化、成员初始值设定项列表或构造函数体中将其设置为
nullptr
,如果使用
unique\u ptr
请确保使用声明为
std::unique\u ptr
T[]
变量,其中
T
是动态分配数组的类型。它在它的内部指针上调用
delete[]
,就像你在数组中应该调用的那样。@jaggedSpire
std::unique\u ptr
听起来不错,但是在你的第一个场景中使用这个神奇的
std::unique\u ptr
会不会有性能成本(意味着降低速度),在删除它之前,不需要检查NULL<代码>删除正确处理空指针。@PeteBecker 1。您的意思是我仍然需要将其设置为
nullptr
,但在
delete
之前不需要检查其空值?2.我的指针将来可能是一个动态数组,然后删除[]a_指针也能在
nullptr
上正常工作?@grigor
std::unique_ptr
听起来不错,但想知道使用这种神奇的
std::unique_ptr
是否会带来性能成本(意味着降低速度)?简短的回答并不是真的。更详细的回答:@PeteBecker我知道如果类中的指针没有初始化为
nullptr
,它会得到一个垃圾值。那么
delete
是否能很好地处理这个垃圾值?阅读你的评论,我现在想我真的需要初始化指针。在你的第一个场景中,你不需要在删除它之前检查NULL<代码>删除正确处理空指针。@PeteBecker 1。您的意思是我仍然需要将其设置为
nullptr
,但在
delete
之前不需要检查其空值?2.我的指针将来可能是一个动态数组,然后删除[]a_指针也能在
nullptr
上正常工作?@grigor
std::unique_ptr
听起来不错,但想知道使用这种神奇的
std::unique_ptr
是否会带来性能成本(意味着降低速度)?简短的回答并不是真的。更详细的回答:@PeteBecker我知道如果类中的指针没有初始化为
nullptr
,它会得到一个垃圾值。那么
delete
是否能很好地处理这个垃圾值?阅读你的评论,我现在在想我真的需要初始化指针吗。