Chinaunix
标题:
大家来评论下
[打印本页]
作者:
aoyang888
时间:
2011-08-16 10:51
标题:
大家来评论下
#include <iostream>
using namespace std;
int main()
{
char *str;
str = new char[1];
str = "abc";
cout<<str<<endl;
return 0;
}
这个程序有什么严重的后果?
作者:
fender0107401
时间:
2011-08-16 10:52
没啥严重后果,程序结束以后内核会回收所有内存。
作者:
liwangli1983
时间:
2011-08-16 13:48
分配那一字节(实际上可能更多)内存永远不会被回收了(如果程序一直运行的话),所谓的内存泄露。当然在这个小程序里是无所谓了
作者:
jiayanfu
时间:
2011-08-16 14:00
2喽和3喽的答案不一样,大家来讨论一下子。站队喽!我顶3楼!
作者:
davidfoxhu
时间:
2011-08-16 14:08
还好,你没delete!
更幸运的是,你不是某个大工程中,哈哈!~
作者:
aoyang888
时间:
2011-08-16 15:09
恩 ,3 、5楼的看法不错,但是怎么去delete它了,指向堆的指针没了
#include <iostream>
using namespace std;
int main()
{
char *str;
str = new char[1];
delete str;
str = "abc";
cout<<str<<endl;
return 0;
}
各位看看这段代码有问题吗?
作者:
fender0107401
时间:
2011-08-16 16:51
虽然我不怎么懂C++,但是我认为你这个代码非常有趣。
作者:
txdgtwpv
时间:
2011-08-16 17:46
没关系,总会遇到'\0'的
作者:
nth2say
时间:
2011-08-19 09:43
2、3L答案是一样的。
会有1字节泄漏,程序结束后系统回收。
delete就出错。
作者:
Fatihyang
时间:
2011-08-19 11:45
首先本来就应该避免 这种后果 如果用在工程里面 也许没事 也许产生很严重的后果
\0是总会遇到的 字符越界 历来都是被 严厉禁止的
作者:
zylthinking
时间:
2011-08-19 11:48
我就知道一个严重后果 char* = const char*, 编译器**
作者:
zylthinking
时间:
2011-08-19 11:49
靠, 坝工总可以了吧
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2