有关内存的有关问题
有关内存的问题
上面的这个程序是在《高质量程序设计指南》里看到的,题目问的是运行Test函数会有什么样的结果,书上的回答我不是完全看懂了,哪位可以详细讲解一下这道题目,谢谢。
------最佳解决方案--------------------
------其他解决方案--------------------
确实如楼上所说,不能返回局部变量的地址
你试着编译下下面的代码
------其他解决方案--------------------
书上的回答我不是完全看懂了,
哪位可以详细讲解一下这道题目,
------其他解决方案--------------------
不知道有没有写对
其实2楼已经完美的解答了你的问题
------其他解决方案--------------------
不能返回指向 stack 的指针变量
------其他解决方案--------------------
依然是乱码啊,对吗?
------其他解决方案--------------------
把你的完整代码贴出来看看
------其他解决方案--------------------
我贴出来的就是书上的完整代码了。
------其他解决方案--------------------
学习了
------其他解决方案--------------------
char*GetMemory(void)
{
char p[]="hello world";
return p;
}
void Test(void)
{
char *str=NULL;
str=GetMemory();
printf(str);
}
上面的这个程序是在《高质量程序设计指南》里看到的,题目问的是运行Test函数会有什么样的结果,书上的回答我不是完全看懂了,哪位可以详细讲解一下这道题目,谢谢。
------最佳解决方案--------------------
char*GetMemory(void)
{
char p[]="hello world";//把hello world拷贝到p数组里,它是栈分配的内存,函数结束会被释放
return p;
}
void Test(void)
{
char *str=NULL;
str=GetMemory();//str指向的是已被释放的内存区域,结果将不可知
printf(str);//乱码一堆
}
------其他解决方案--------------------
确实如楼上所说,不能返回局部变量的地址
你试着编译下下面的代码
char*GetMemory(void)
{
char *q;
char p[]="hello world";
q=p;
return q;
}
void Test(void)
{
char *str=NULL;
str=GetMemory();
printf(str);
}
------其他解决方案--------------------
书上的回答我不是完全看懂了,
哪位可以详细讲解一下这道题目,
------其他解决方案--------------------
char*GetMemory(void)
{
char *q=new char[20];
char p[]="hello world";
q=p;
return q;
}
void Test(void)
{
char *str=NULL;
str=GetMemory();
printf(str);
delete[]str;
}
不知道有没有写对
其实2楼已经完美的解答了你的问题
------其他解决方案--------------------
不能返回指向 stack 的指针变量
------其他解决方案--------------------
依然是乱码啊,对吗?
------其他解决方案--------------------
把你的完整代码贴出来看看
------其他解决方案--------------------
我贴出来的就是书上的完整代码了。
------其他解决方案--------------------
学习了
------其他解决方案--------------------