char *getmemory(void)
{
char p[] = “hello world”;
return p;
}
void test(void)
{
char *str = NULL;
str = getmemory();
printf(“%s\n”,str);
}
请问运行Test会有什么样的结果?
A. 出错
B. 输出“hello world”
C. 输出空“”
D. 输出乱码
解析:char p[]创建空间在栈空间上,函数返回就则释放。因而srt指向的内存已经释放
char *p = “abcd”; abcd是存储在静态数据区,函数返回不会释放。
char *p = (char *)malloc(10 * sizeof(char));创建空间在堆空间,程序员不释放则不会释放。