
C++程序运行问题,debug时程序会停止运行,release时正常,想请教各位大神为什么会出现这样的问题
#include<iostream>usingnamespacestd;//实现string类的动态联编intmain(){char*getstring();char*s...
#include<iostream>
using namespace std;
//实现string类的动态联编
int main()
{
char * getstring();
char * string;
string = getstring();
cout << string;
return 0;
}
char * getstring()
{
char temp[80];
scanf_s("%s",temp);
char * p = new char[strlen(temp)+1];
strcpy_s(p,80,temp);
return p;
}
//一般不是debug正常release会出现问题吗,这个程序是什么原因导致的呢,编译器vs2012update4 展开
using namespace std;
//实现string类的动态联编
int main()
{
char * getstring();
char * string;
string = getstring();
cout << string;
return 0;
}
char * getstring()
{
char temp[80];
scanf_s("%s",temp);
char * p = new char[strlen(temp)+1];
strcpy_s(p,80,temp);
return p;
}
//一般不是debug正常release会出现问题吗,这个程序是什么原因导致的呢,编译器vs2012update4 展开
1个回答
展开全部
分配的char数组 是在栈上分配的,getString结束,,该内存回收,,返回的指针*p指向该回收的内存。。
更多追问追答
追问
那为什么release版本可以正常运行,能讲得细致一点吗?这边小白一只
追答
虽然说是 回收,,其实这片内存保存的还是 你的string数据, 系统并没有立即 真正的回收。。只是程序中不该这么用了而已,,因为系统早晚会用这片内存,, 建议使用malloc方法 申请内存
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询