现在的位置: 首页 > 综合 > 正文

关于new的一个问题

2013年09月03日 ⁄ 综合 ⁄ 共 484字 ⁄ 字号 评论关闭
关于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%正确。 

抱歉!评论已关闭.