请教《高质量**编程指南 》中的一道指针参数传递内存的问题
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。
因为GetMemory返回的是指向“栈内存” 的指针,该指针的地址不是 NULL,但其原先的内容已经被清楚,新内容不可知。
请问这个栈内存究竟是啥回事?