| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:奇怪了,vector组件中这样不可以?为什么?
只看楼主 加入收藏
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
奇怪了,vector组件中这样不可以?为什么?
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int i=0;
class CDemo
{
public:
    CDemo():str(NULL)
    {}
/*    CDemo(const CDemo &cd)
    {
        this->str=new char[strlen(cd.str)+1];
        strcpy(str,cd.str);
    }*/
    ~CDemo()
    {
        if(str)
        {
            delete []str;
        }
    }
    char *str;
};


int main(int argc,char *argv[])
{
    CDemo d1;
    d1.str=new char[32];
    strcpy(d1.str,"trend micro");
    vector<CDemo>a1;// = new vector<CDemo>();
    /*for(i=0;i<10;i++)
    {
        a1.push_back(d1);  //循环第3次的时候崩?????????
    }
    //a1->push_back(d1);
    for(i=0;i<10;i++)
    {
        cout<<a1[i].str<<endl;
    }
*/
    CDemo d2(d1);
    CDemo d3(d1);
    CDemo d4(d1);
    CDemo d5(d1);
   

    a1.push_back(d1);
    a1.push_back(d2);
    a1.push_back(d3);
    a1.push_back(d4);  ///////////////////////崩处!!!
    a1.push_back(d5);
    //delete a1;
    return 0;
}

这几个对象公共一个字符串空间,我给vector加入的是对象,又没释放内存的,怎么会在添加d4的时候系统崩了呢?这是为什么呀????
搜索更多相关主题的帖子: class std include public 
2012-03-13 11:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:20 

delete[] str;
换成
cout << (void*)str << endl;

你就能明白了
2012-03-14 08:24
快速回复:奇怪了,vector组件中这样不可以?为什么?
数据加载中...
 
   



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

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