65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
void main()
{
char** str = new char*[3];
str[0] = new char[20];
str[1] = new char[20];
str[2] = new char[20];
str[0] = "Nihao"; //内存泄漏
str[1] = "NihaoMa";//内存泄漏
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[1];//此时str[1]已不指向开始new的内存,delete出错
delete [] str;
str = str1;
/* for(i=0; i <2; i++)
delete str[i];*/
delete []str;
}
strcpy(str[0] , "Nihao");
strcpy(str[1] , "NihaoMa");
strcpy(str[2] , "NihaoYa");
如果像lz那样,那么就是将str[0]指向了常量指针!肯定不对!
#include <iostream>
using namespace std;
void main()
{
char** str = new char*[3];
str[0] = 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[1];
delete[] str[0];
delete[] str[1];
delete[] str[2];
delete[] str1;
delete [] str;
}