一个简单的C++问题,菜鸟求助!

来源:百度知道 编辑:UC知道 时间:2024/09/20 22:45:03
这是全国计算机考试里的一道上机题

#include<iostream.h>
void main()
{
char* str1;
char str2[1024];
cout<<"Please input a string:"<<endl;
str1=new char[1024];
cin.getline(str1,1024);
cout<<"Please input a string:"<<endl;
cin.getline(str2,1024);
delete str1;
}
程序要求运行后没有内存遗漏

为什么只delete str1,而不用delete str2?

为什么要str1=new char[1024]; 不用str2=new char[1024];

有内存遗漏

str1是一个指针,指针只向了char[1024]
str2是一个array,长度为1024

str1=new char[1024]的意思是把指针str1指向了char[1024]
str2 本身就是个array了所以不用

delete 了 str1 产生了内存遗漏, 因为指向char[1024]的指针被删除了,char[1024]并没有被删除,而是留在了内存里了