您的位置:首页 > 其它

关于new的一个问题

2013-07-21 21:38 127 查看
关于new的一个问题

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 char* a= new char;
6 a = "tomatoes";
7 cout<<a<<endl;
8 }
结果是什么? 请思考后才看下面。

tomatoes
知道为什么吗?因为a只是个指针而以,它可以指向一个字符,也可以指向一个字符串。在第5行的时候,a指向的是一个一字节的char,但是在第6行的时候,a已经指向"tomatoes"了。因为字符串常量的实质也是指针,比如"tomatoes"是一个指向首字母"t"的字符指针,并且字符串常量最后以结尾符'\0'结尾,就是字符串的指针赋值给a。所以输出的时候,就是"tomatoes"了。所以这个例子是一个典型的资源泄露的例子。因为new
char了,却没有使用,并由于a在之后已经不指向这个字符的空间,使之以后都没有机会再被释放掉了,所以这1bit空间就资源泄露了。

如果你实验,会发现cout<<*a;就是t。cout<<a就是 tomatoes 。

一些想法,不确定100%正确。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: