一个简单的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];
#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]并没有被删除,而是留在了内存里了