关于new[]与delete[]的小问题
#include "stdafx.h"
#include <iostream>
using namespace std;
#define LEN sizeof(struct People)
struct People
{
int num;
char name[20];
char sex;
char job;
union
{int clas;
char position[10];
}category;
}*person[2];
int main(int argc,TCHAR* argv[])
{int i;
for(i=0;i<2;i++)
{person[i]=new People[LEN];
cout<<"请输入表格信息:"<<endl;
cin>>person[i]->num>>person[i]->name>>person[i]->sex>>person[i]->job;
if(person[i]->job=='s')cin>>person[i]->category.clas;
else if(person[i]->job=='t')cin>>person[i]->category.position;
else cout<<"Error!"<<endl;
}
for(i=0;i<2;i++)
{cout<<"输出表格信息:"<<endl;
if(person[i]->job=='s')
cout<<person[i]->num<<" "<<person[i]->name<<" "<<person[i]->sex<<" "<<person[i]->job<<" "<<person[i]->category.clas;
else
cout<<person[i]->num<<" "<<person[i]->name<<" "<<person[i]->sex<<" "<<person[i]->job<<" "<<person[i]->category.position;
cout<<endl;
delete person[i]; //用delete[] person运行出错
}
return 0;
}
程序中两处红色语句,前面用new [];后面应该用delete [];释放才对啊,为什么不行?
[解决办法]
应该是
delete [] person[i]
吧
[解决办法]
delete[] person放循环外面,删除两次,当然出错了
[解决办法]
++