如何在解构器中正确释放变量
假设我要创建一个具有这种结构的类
class A
{
int a;
B* b;
}
我读过解析器中使用的变量是一件好事。
~A
{
delete b;
}
但一般来说,我需要做一个类型为int,double,primitive类型的变量吗? 什么是最好的方式或一个好的编程规则?
您不需要删除基本类型。
但不仅限于基本类型。 对于你没有用new
分配的任何东西,你不必调用delete
。 即使是指针。
在每一个new
c++
应该有一个delete
。
当new
被调用时,你正在堆上分配,你有责任去分配它。 如果没有使用new
的内存,内存将被分配到堆栈上,并将在我们的范围内解除分配。
请阅读这个和这个。 有很多关于这个话题的信息。
我认为B是另一类。 你刚刚宣布了指针。 但还没有实例化。 您尚未为该指针分配任何内存,因此将其初始化为null。
B* b = NULL;
现在,在解构器中删除它之前,请检查您是否分配了任何内存。
if(b){delete b; b = NULL;}
在上面的代码中,如果你分配任何内存,那么只有它会释放。 例如:如果你做到了
*b = new b
现在一些内存被分配给这个特定的指针。 所以它会正确释放。 除非你为指针分配了一些内存,否则你不需要解除分配。 希望这会帮助你。
链接地址: http://www.djcxy.com/p/79803.html