一个 关于内存的有关问题<请求各位大大回答>

一个 关于内存的问题请求各位大大回答void GetMemory(char *p){p (char *)malloc(100)}void Test(voi

一个 关于内存的问题<请求各位大大回答>
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)  
{
char *str = NULL;
GetMemory(str); 
strcpy(str, "hello world");
printf(str);
}

请问运行Test函数会有什么样的结果?

<请问为什么会出错>
 


[解决办法]
在GetMemory函数结束时参数p并没有得到在GetMemory函数中分配的内存,不能传递动态内存,strcpy(str, "hello world");这条语句中的str一直是没有空间的指针。所以错误。新人混分!
[解决办法]
void GetMemory(char *&p)
改成这样
[解决办法]
void GetMemory(char **p)
{
*p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str);
strcpy(str, "hello world");
printf(str);
}

这样就OK咯 这个在高质量C++/C编程里讲的蛮清楚的 建议楼主去看看 书也不厚