帮忙解决下c的问题。谢谢。

内容看下图。求大神说下下面四到题?。。。。c基础。。。。。 图片说明

看看。。。。。。。。。。。。。。。。。

那不是有答案么,想仔细一点可以直接搜索错误啊

图片说明
图片说明
图片说明
图片说明

你可以自己在将代码运行一遍,不就清楚了。。。如果想知道原因,网上搜索就可以了

其实这四道题是考察堆内存和栈内存的。
堆内存的生存周期为只要不用free()释放,它就一直存在,很容易造成内存泄漏;而栈上的空间是自动分配自动回收的,所以栈内存的生存周期只在函数内,运行完便不存在了。知道这些,那四道题就好理解了。如果还不明白,可以查查内存分配的一些知识。我就只说一下第一题,后面的应就懂了。
第一道题:GetMemory()中的指针变量p用malloc()函数动态申请了空间,但由于GetMemory()这个函数无返回值,所以它并不能传递动态内存,Test函数中str一直都是NULL。strcpy函数将会使程序崩溃,也就出现段错误啦。

char *p="hello world";
return p;
只有指针才能返回,不能返回数组名的