永发信息网

delete为什么释放内存

答案:1  悬赏:40  手机版
解决时间 2021-05-08 19:21
#include <iostream.h>
void main()
{
char *p=new char[4];
p="as";
cout<<p<<endl;
delete []p;
}
为什么在程序结束的时候会出错,这到底是什么错误?delete后是清空指针所指的内容还是另指针无效,再调用指针都会出错吗?但在delete之前加p=NULL再delete就好使
最佳答案
p=NULL; 之后,就变成 delete 空指针了,只是 delete 的容错机制允许传入一个空指针而已,不代表没有问题。

问题的关键在于你的赋值语句错了。

char *p=new char[4]; // p 是一个指向4个字符的指针
p="as"; // 注意这里,"as" 是一个静态字符串指针

这个赋值语句,是把 "as" 的指针地址,赋给 p。
delete []p; 就变成了释放 "as" 这个静态字符串指针,当然会出错。

应该改为用字符串复制函数:
strcpy(p, "as");

或者更安全的:
//#include <strsafe.h>
StringCbCopyA(p, 4, "as");
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问,真爱和深爱有什么区别?是什么关系?
帮忙推荐几款适合20--25年龄段使用的补水乳液
我有一百一十六张7953年的一分纸币,请问能值
怎么删除任务?
QQ音乐淘歌里有首死如冬草谁能给我找到
上海松江九亭怎么去松江新城地铁站
有个玩DNF的美女、竟然在百度查到了我的QQ?
一个月挣2000和5000,区别大吗
2010年8月份广东神州行还能包万花筒吗?请知
Aaron亚伦找个情侣的英文名
现在是不是实行一种:如果到省外读,档案就只
5320换壳后的问题!
淮安宏运伟业物流有限公司在哪里啊,我有事要
下身要比上身胖,穿男版直筒牛仔裤合适麽?
BEYOND ~“海阔天空”的歌词及其相关信息
推荐资讯
睡前吃哈密瓜会胖吗?
DNF怎么修改时装 会的加我 追20分
有关匠心品质名句,怎样形容吊兰没的诗句?
小栗旬的MV!!!!
黄金QQ的资讯订阅是否要钱?
DNF美美刷塔为什么老掉
暗黑亚马逊怎么不能往凹槽里放东西啊
谁会使用绘声绘影啊/
日语中的“勉强”什么意思
关于星光的诗词,描写星光的诗词
安成汽修厂在什么地方啊,我要过去处理事情
电脑桌面东西怎么变大了怎么回到正常图标
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?