第一题:下面程序运行的结果是?
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
答:程序崩溃。
因为 GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。strcpy(str, “hello world”);将使程序崩溃。
指针变量传参,其实是创建了一个临时变量,让这个临时指针变量指向malloc申请的空间,但str依旧指向NULL,执行strcpy时程序会崩溃。还有就是p申请后要free释放,防止内存泄漏。