2 u011134641 u011134641 于 2014.05.22 23:21 提问

请问该段程序的错误在哪里?
c++

#include
#include
using namespace std;

void Get(char* p){
p=new char[100];
}

int main(){
char* s=NULL;
Get(s);
strcpy(s,"mei");
cout<<s<<endl;
return 0;
}

3个回答

lym753024200
lym753024200   2014.05.23 10:07

缺少delete来释放new分配的内存

nmssdmf
nmssdmf delete [] s;
3 年多之前 回复
u011134641
u011134641 是加一句delete(s);吗? 为什么程序运行不出来,谢谢!
3 年多之前 回复
wayneyumi
wayneyumi   2014.05.23 10:50

和楼上说的一样没有用delete删除分配内存,会造成内存泄露。还有最好用C++风格写,你这样的程序是由安全隐患的(作为联系当然没什么大影响),如果读入的数据长度大于你分配的内存长度(100)会造成意外的错误。

taiyang_1435586562
taiyang_1435586562   2014.07.09 14:32

楼上说得对,程序运行后,new出的空间无法释放

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!