快速成型的原理:请教一个C++内存释放的问题!

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 06:52:10
我想问一下C++中使用new创建内存空间后,如:
int *p=new int[10];当我在创建一个内存空间:int *q=new int[5];我把q的地址链接到p地址后面。用delete释放的时候是不是只需要写 delete p;就行了还是delete p;和delete q;都要写。为什么?谢谢!
我想补充一下:如果p和q都是如下定义的结点类型;
struct Lnode
{ int num;
Lnode *next;
}
那么链接的时候我把p的最后一个结点指针指向q的第一个结点,那么释放的时候是不是只需delete []p就可以了?

释放内存注意:
(1)如果是分配数组内存,释放时需要使用 [] 如;
int *p=new int[10];
delete []p; //由于分配数组需要使用 []
(2)当多个指针共享一个内存时,只要释放一次就可以了,因为他们指向同一个地方。释放两次会发生错误吧。
你这里就只能释放一次了。

析构函数就可以释放啦。

都不是
应该是
delete []p;
delete []q;

你是说你把q链接到p?要先释放再重新定向指针。
delete q;
q=p;
执行完这两句后
delete p和delete q 就等价了,喜欢用哪个都行,不过还是用delete p规范一点。
记住一个new对应一个delete就行了。