中易网

char* a=new char;a="abc";会泄露内存么?

答案:3  悬赏:30  
解决时间 2021-02-14 17:57
char* a=new char;a="abc";会泄露内存么?
最佳答案
char* a=new char;a="abc";
会的,你原来分配给a的空间后,再次修改它的值 ,使原来的分配的内存失控,无法回收了。
修改动态分配了内存的指针后,如果需要修改,记得先回收。
char* a=new char;delete a;a="abc";
全部回答
1,char*a;*a="abc" 是错误的, *a是字符,不是字符串。 2,另外两句完全一样。虽然编译能通过,但是你这句本身就是错误的:字符串定义应该是 const char *a = "abc"; 因为字符串储存在不可读内存中,所以c语言中字符串的的返回值是 const char*. 3, 如果要得到能读写的字符串请使用字符数组: char a[] = "abc"
char *a=new char;a="abc";会泄露内存么? 不会,因为你定义的是一维数组,不过你上面的表达错误 char *a="new",char;a[]="abc";这样就不会报错了! 你这里char* a=new,你用char又用了指针,很明显,你这是要定义指向字符串数组指针,正确表达式为:char *a="new",char;a[]="abc"; 如果第二个表达式我理解错误的话,你的意思就是说:将字符串"abc"给字符串变量a这个是没有错的,是正确的表达式,不会出现泄露内存! 一维数组的下标可以省,但是二维数组的列下标不能省,如char a[][10]是对的,char a[][]是错的,只有二维数组才会出现泄露内存的情况,因为它不能省列标 char *a=new char;a="abc";你上面并没有给固定的缓存区,而一维数组行标又可以省,所以你无论定义多少字符串,只要省行标,就不会出现泄露内存的情况!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
病句大家以实际行动接受手拉手 献爱心号召怎
电脑上看用手机登QQ的人的好友印象 是不是都
欲将心事交碧水,又恐浪漫黄鹤知是谁的诗
江苏省小学生数学报一等奖2016.4
如图所示,梯形ABCD中,AD平分BC,点P是AB的
三星服务中心换屏是原装的吗
2、求下列微分方程满足初始条件的特解: (3)
新胜达家私我想知道这个在什么地方
如何加强监狱警察队伍的教育,管理,监督及培
上海应用技术学院 城市建设与安全工程学院(
多维空间如何用语言描述 和一些问题
立乙空调行在什么地方啊,我要过去处理事情
如何手动安装VISTA补丁SP1
动物医学能跨考医药学吗?想跨考这个专业!
桂林市逸仙中学疯狂补课如何向教育局举报
推荐资讯
眼睛分泌物突然好多,如何是好?
统计学中outcome是什么意思
70JDNFBUG怎么弄就是刷人偶?
成吉思汗3电信四国经典扬帆区是那几个服务器
璧山区祥龙机械厂地址在哪,我要去那里办事
2016漯河五高高一理科生物月考答案
金豆东北水饺在什么地方啊,我要过去处理事情
鑫业园怎么去啊,有知道地址的么
在有兴旅社这个地址在什么地方,我要处理点事
淘宝网买东西怎样到美宜佳付款
太平桥大街/西兴盛胡同(路口)在哪里啊,我有
美庭世家家具专卖店地址在哪,我要去那里办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?