Chinaunix首页 | 论坛 | 博客
  • 博客访问: 330880
  • 博文数量: 174
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 587
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-12 19:39
文章分类

全部博文(174)

文章存档

2018年(2)

2016年(10)

2015年(6)

2014年(31)

2013年(92)

2012年(33)

我的朋友

分类:

2012-11-05 23:14:03

原文地址:vector 析构问题 作者:xhb8413

 
 
 
 
 
日志
 
vector 析构问题  
 
请看下面的程序,说说会出现什么问题?

#include
#include
#include
using   namespace   std;

class   CDemo   {
public:
    CDemo():str(NULL){};
    ~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   *a1=new   vector();
  
    a1->push_back(d1);
    delete   a1;
  
    return EXIT_SUCCESS;
}

这个程序在退出时,会出问题,什么问题?重复delete同一片内存,程序崩溃。
我们把析构函数改为如下,可以更清楚的看到这一点:
    ~CDemo()
    {
        if(str)
        {
            static int i=0;
            cout<<"&CDemo"<管理员在2009年8月13日编辑了该文章文章。
-->
阅读(525) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~