下面来看一段代码
#include<stdio.h>
#include<string.h>
void Getmemory(char* p)
{
p = (char*)malloc(100);
}
int main()
{
char* str = NULL;
Getmemory(str);
strcpy(str, "hellow world");
printf("%s", str);
return 0;
}
这段代码是运行不出来的,首先,没有释放内存造成内存泄漏,其次Getmemory函数是进行值传递,而非地址,p变量出了函数后就销毁,那么str还是空指针,因此错误。所以我们要传地址,地址的地址就要用二级指针来,修改如下
#include<stdio.h>
#include<string.h>
void Getmemory(char** p)
{
*p = (char*)malloc(100);
}
int main()
{
char* str = NULL;
Getmemory(&str);
strcpy(str, "hellow world");
printf("%s", str);
return 0;
}