空指针作为函数形参进行内存申请问题
今天遇到一个Bug,把一个空指针传到函数里面进行动态内存申请并初始化,当函数内申请内存成功,并且成功返回,但这个指针一直是个空指针。
问题是 这个形参是个局部变量,在函数结束后,回收了。
要把这个函数指针的地址作为参数传给函数,形参为二级指针
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void function2(char** ptr)
{
*ptr = (char*)malloc(10);
strcpy(*ptr,"hello");
printf("In function2 >> %s\n",*ptr);
}
void function1(char* ptr)
{
ptr = (char*)malloc(10);
strcpy(ptr,"world");
printf("In function1 >> %s\n",ptr);
}
int main()
{
char* ptr1;
char* ptr2;
function2(&ptr2); // > hello
printf("Out function2 >> %s\n",ptr2); // > hello
function1(ptr1); // > world
printf("Out function1 >> %s\n",ptr1); // > null
}