| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1862 人关注过本帖
标题:delete之后程序怎么退出了
只看楼主 加入收藏
caoboxx
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:10
专家分:9
注 册:2013-1-22
收藏
得分:2 
这是因为你
while((*(p++) = *(p1++)) != 0)
这个语句执行之后 p 指针已经指向了所分配内存的最后位置,当然不能成功
#include <iostream>  
#include <string>
using namespace std;

int main()
{
    char *p1="This is a test!";
    char *p=new char[strlen(p1)+1];  
    char *p_start=p;
    while((*(p++) = *(p1++)) != 0);  
    cout<< p_start<<endl;
    p=p_start;//添加此语句就可以了
    delete [] p;
    return 0;
}
2013-01-22 17:10
chinawide
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2013-1-21
收藏
得分:2 
回复 5楼 fxbszj
这是标准c++释放堆里所开的空间啊
2013-01-23 16:07
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:2 
11楼正解。
你的p值已经不是原来的那个了,或者可以直接删p_start,只是,最好别这么做,非常不好的习惯。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2013-01-23 16:56
快速回复:delete之后程序怎么退出了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019365 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved