这个是必须的啊。用new分配了一块内存,在使用完之后必须释放掉,否则就是内存泄露;指针也必须置空,不然这个指针就变成野指针了。以上两点都是隐患。有时候不释放也不会出问题,但new和delete一起使用这是标准C++的规则,我们学习应该按照标准来。
所以析构函数应该是
~LCS()
{
delete []a;//new的是数组,释放的时候要加[]
a=NULL;
}
最好是要,不要的话编译是能够通过,但是你用new开辟的空间便会一直占着,直到关机或者重启,这是一个很不好的习惯
析构函数是你用完对象之后,自动调用,释放你所开辟的空间
呵呵!!这个问题其实很简单的!!!
new就是在内存中申请一个空间,来存储你的数据
但是当你用完的时候就可以销毁这个内存了(因为内存的大小是有限的)
即使你不释放在程序运行过程中是不会自己释放的,如果你写的程序不断
的申请空间而不释放的话,电脑会变的很卡的
但是如果你的程序是很小的程序就算不释放也没有多大的影响,,
win有自己的防止内存泄露的机制,就算你不释放当程序的进程结束的时候
windows会把你申请的空间释放了的...........
明白了吗???
没听太懂,如果是默认析构函数delete不会释放a的指针,因此必须在自定义虚构函数把new了的a delete掉。
PS:LZ的a new的是数组,应该用delete[]不然还是会造成内存泄露
new申请的内存实际大小不是20个字节,这块内存的user
memory
block之前会分配一部分内存记录着分配这块内存的信息,其中包括这块内存的申请长度,如果,改变指针的的值,那么,使用delete释放内存的时候,可能出现非法操作内存。delete释放的内存其实,并没有真正的释放,而是将这些内存从新加入到动态内存空闲链表。