永发信息网

C++中我想进行以下类似操作,最后能把这个创建的空间释放掉吗

答案:2  悬赏:50  手机版
解决时间 2021-03-21 09:09
char* a;
char *b
a = new char[10];
b=a;
delete b;
a = null,b=null;
最佳答案
可以,a和b所指向的内存是相同的。
但程序有以下小bug:
1. C++标准中NULL是大写的。
2. 建议释放数组时用delete[]而不是delete,虽然针对基本类型这两者没有区别。
全部回答
大致看了一下,你这个程序的问题是内存管理方面的问题。 而且你的程序在内存方面问题比较大。 1、一个临时对象开辟(new)了一个内存空间,没有及时释放,导致生命周期结束,最后没有就没有办法去释放掉;还有一个临时变量开辟了多次也没有释放。 比如 成员函数create(int n)中 lnode *p; elemtype x; int i=1; while(i<=n) { cout<<"请输入第"<>x; p=new lnode;//这里开辟了空间,后面没有释放 p->data=x; p->next=head->next; head->next=p; i++; } 临时变量p开辟了多次内存,每次都没有释放。 解决方法,可以考虑用成员指针变量pnode替代局部需要开辟的内存的地方。 2 内存管理另一个有效解决方法是。 在一个指针变量(比如 lnode * pnode )初始化的时候指向null, new 和delete要配套使用,delete之后试该指针指向null,这样就可以避免被删掉的指针再次被删掉。 例如: lnode *pnode=null; //........函数代码 pnode=new lnode();//这里开辟给pnode开辟空间之后,pnode就不指向null了 //......函数代码 if(pnode!=null)//如果不指向null就执行下面代码 { delete pnode;//如果开辟了数组空间就delete []pnode; pnode=null; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我笔记本进水了需要拿到售后吗》????
信艺通电脑设计装潢部地址有知道的么?有点事
被蚊子咬会不会得传染病
有关爱情的古书有哪些,喜爱古代文学的人来推
问道新区炼丹炉多少钱能出变异
东山蓝贝壳公寓地址有知道的么?有点事想过去
英格兰地区联赛升到上一级联赛的升降级制度
求个玉玑子的搜狗皮肤
至雅大厦地址在哪,我要去那里办事
国际版本的QQ说说配图在哪里?
如果我已经在公安局做过笔录了,罪名没成立。
您好,我购买了你们的W311M型无线网卡,但在
哪个女生更符合大众审美?理由
今年高考400分,想补习,能上徐沟中学的补习
主力吸筹完毕,入货是什么意思
推荐资讯
简易饭团的家常做法大全怎么做好吃视频
用什么做音乐相册
新配的镜片上有一个很小的亮点,只在反光的时
24.5-2x=12.5
dnf解除异常状态的药水有哪些
青年鸡一般多少钱一只
QQ炫舞合成魔法套装技巧是什么?
考博英语考听力吗
通过朋友的二次传播带来更多顾客,这种营销模
财神鱼为什么会失漂?
腰细腿粗男生喜欢么?苦恼,自卑,喜欢瘦瘦身
直流220V 10A用多大压敏电阻
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?