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

有关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"真的会释放吗?再考虑考虑。

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