struct指针数组的析构问题

来源:互联网 发布:js string转jsonarray 编辑:程序博客网 时间:2024/06/08 11:16

这个问题比较隐蔽.
#include "stdafx.h"#include "1.h"//定义了结构体#include <iostream>#include <stdlib.h>using namespace std;int _tmain(int argc, _TCHAR* argv[]){plant p1;p1.p_flower=new flower[10];p1.num=10;char a[10];for (int i=0;i<10;i++){    p1.p_flower[i].name=new char[20];    strcpy(p1.p_flower[i].name,"aa");//要用strcpt而不能直接赋值;如果p1.p_flower[i].name="aa"会导致这样的问题:        //1)给p1.p_flower[i].name分配的空间成了没有指针指向的垃圾地址,地址泄露发生了        //2)p1.p_flower[i].name这个指针指向了常量区,无法进行后面的delete操作strcpy(p1.p_flower[i].color,"bb");}for (int j=0;j<10;j++)    cout<<"第"<<j<<"个植物是:"<<p1.p_flower[j].name
                <<"   颜色是:"<<p1.p_flower[j].color<<endl;for (int k=0;k<10;k++){    delete[] p1.p_flower[k].name;//一个new 对应一个delete     cout<<k<<"个植物被析构\n";}delete[] p1.p_flower;system("pause");return 0;}


Reference:http://zhidao.baidu.com/question/81948054.html