内存管理问题(delete用法)

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:38:11
#include <iostream>
using namespace std;
#include<math.h>
void main()
{
char **str = new char*[3];
*str = new char[20];
*(str+1) = new char[20];
*(str+2)= new char[20];
strcpy(str[0] , "Nihao");
strcpy(str[1] , "NihaoMa");
strcpy(str[2] , "NihaoYa");
int i;
for(i=0; i<3; i++)
cout<<str[i]<<endl;
char** str1 = new char*[2];
str1[0] = str[0];
str1[1] = str[2];
for(i=0; i<2; i++)
{cout<<str1[i]<<endl;
//delete str[i]; }
delete []str1;
//str = str1;
for(i=0; i<3; i++)
delete []str[i];
delete []str;
}
}
问:这个程序正确吗?不正确,怎样改?

我错了
感觉这个有问题
for(i=0; i<2; i++) ////////这个for...
{cout<<str1[i]<<endl;
//delete str[i]; }
delete []str1;
//str = str1;
for(i=0; i<3; i++)
delete []str[i];
delete []str;
}

strcpy(*str[0] , "Nihao");
strcpy(*str[1] , "NihaoMa");
strcpy(*str[2] , "NihaoYa");

...
delete *str[0];
delete *str[1];
delete *str[2];
delete str;