请问个内存问题,谢谢!
#define N 6 //为什么这里的N,当他是小于6的时候,在
//delete那里就要有内存错误?把delete
char *Fun() //去掉之后又完全正常?而当N大于等于6的
{ //时候delete,不会有任何问题?
char *x=new char[N];
strcpy(x,"hello"); //想问一下delete函数是清空的多少内存?
return x; //是不是new出来多少,就清空多少?
} //另外new出来的空间小于6,为什么字符串
void main() //也可以被strcpy成功?而只是在delete
{ //时出现错误呢?谢谢大家!
char *p=Fun();
cout<<p<<endl;
delete []p;
}
在strcpy的时候,只要我new的空间不是0,在不调用delete的时候是好用的,就是说还是可以把hello拷进去的,也可以正确的输出;但如果想调用delete,那我在new的时候就必须得大于等于字符串的长度才行,否则内存出错。