首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关vc6.0的debug与release,该怎么解决

2012-06-01 
有关vc6.0的debug与releasechar *get(){char *phelloreturn p}void main(){char *strNULLstrget()

有关vc6.0的debug与release
char *get()
{
char *p="hello";
return p;

}
void main()
{
char *str=NULL;
str=get();
strcpy(str,"abc");
printf(str);
}


这个小程序在debug下调试是崩溃的,在release下是正常运行的,为什么?

[解决办法]

探讨

引用:
函数结束后p的生命周期结束,该处内存被释放,随时可能被其他数据覆盖,所以你返回这个指针是错误的……
应该改成

"hello"真的会释放吗?再考虑考虑。

当然会释放……生命周期结束这块内存就会被认为无主的内存,系统随时可以再分配给其他变量,但是也可能很久之前才分给其他变量,所以你可能当时访问它的内容还是对的,但是这个内容随时可能被覆盖掉。

热点排行