struct指针数组的析构问题

这个问题比较隐蔽.
#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






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值