char* p="123";与 char* p=new char[3];p="123";有什么区别?不都是让p指向“123”吗?那new还有必要吗? rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char* p=new char[3];只能存放2个字符,因为还有一个字节位置需要存放结尾符。如果new了指针,又给指针赋值;p="123";是使指针指向了字符串常量,造成原来new出来的内存没有办法释放,简称内存泄漏。 书上有这样一段代码:用于CString 到char* 的转换:CString str;int length=str.GetLength();char* p=new char[length];p=str.GetBuffer(0);按楼上所说,岂不是有问题? 应该:lstrcpy(p,"123"); 楼上的改成:lstrcpy(p,str.GetBuffer(0)); 不然就白new了,肯定有内存泄露! 你看哪本书上说的? 结合楼上两位师兄的说法,就是:char* p=new char[3];p="123;这样是会造成内存泄漏的,为什么?因为这个指针p="123"时,转向了,原来那三个字节的堆空间浪费了,没人管啦,指针指到常量区去了.-------在相互的意思吧?用strcpy,将"123"复制到申请到的那三个字节中去,指针并未转向,可以成功使用delete p;--------------晨风的意思吧? 只是这里复制三个字符进去可能有问题.两个好一点. char* p="123"; 让P指向常量123。 但是因为123是常量,所以你想改变123的值就不行。如 p[0] = '2' 这样的语句会出错。与 char* p=new char[3];动态分配3个字节的空间。一定会delete 释放空间。p="123";和第一个字,让p指向一个常量。但是如果你把第二句和第三句放在一起用。你并非把123放到你申请的空间里了 而是让P指向了一个常。因为丢掉了。所申请的空间的句柄而没法sh释放造成内存泄漏。可以用memcpy付值。 再继续问个低级的问题,当char* p=new char[3]后,怎么给申请的空间赋值呢 memcpy或者strcpy都可以啊!最好是放2个字符,留一个给空字符做结束符!当然如果你就是要拷贝3个字符进去也没关系,你以后不要把它当字符串,而时刻注意到它是一个字节串,记得它只有3个有效字符就可以了!不然你很可能会带出一大堆莫名其妙的东西来! 关于菜单变灰色的问题 如何使用picture控件动态载入资源图片 mdi窗口中的浮动窗口。 链接错误,请大家帮忙改一下,谢谢!!! 模板达人请进 请高手进来呵呵:讨论一下photoshop视图旁的标尺的实现 串口驱动安装问题 怎样修改单文档程序的标题栏!!! 为何按钮disabled? 转载] 完全用 GNU/Linux 工作! 摈弃 Windows 关于MFC ASSERT macro弹出错误提示对话 和高手探讨一下PE文件下idata段的疑问
只能存放2个字符,因为还有一个字节位置需要存放结尾符。如果new了指针,又给指针赋值;
p="123";
是使指针指向了字符串常量,造成原来new出来的内存没有办法释放,简称内存泄漏。
书上有这样一段代码:
用于CString 到char* 的转换:
CString str;
int length=str.GetLength();
char* p=new char[length];
p=str.GetBuffer(0);按楼上所说,岂不是有问题?
不然就白new了,肯定有内存泄露!
你看哪本书上说的?
char* p=new char[3];
p="123;这样是会造成内存泄漏的,为什么?因为这个指针p="123"时,转向了,原来那三个字节的堆空间浪费了,没人管啦,指针指到常量区去了.-------在相互的意思吧?用strcpy,将"123"复制到申请到的那三个字节中去,指针并未转向,可以成功使用delete p;--------------晨风的意思吧? 只是这里复制三个字符进去可能有问题.两个好一点.
如 p[0] = '2' 这样的语句会出错。与 char* p=new char[3];动态分配3个字节的空间。一定会delete 释放空间。p="123";和第一个字,让p指向一个常量。但是如果你把第二句和第三句放在一起用。
你并非把123放到你申请的空间里了 而是让P指向了一个常。因为丢掉了。所申请的
空间的句柄而没法sh释放造成内存泄漏。
可以用memcpy付值。
最好是放2个字符,留一个给空字符做结束符!当然如果你就是要拷贝3个字符进去也没关系,你以后不要把它当字符串,而时刻注意到它是一个字节串,记得它只有3个有效字符就可以了!不然你很可能会带出一大堆莫名其妙的东西来!