一级指针做入参,函数内部malloc出来的内存是无法传出来的,但是在调用函数中释放该内存块是不会出错的,谨记。
//以下代码编译运行均正常,但是s打印为空
#include<iostream>
using namespace std;
void func(char* p)
{
p = (char*)malloc(sizeof(char)*128);
strcpy_s(p, 128, "hello");
}
int main()
{
char* s = NULL;
func(s);
printf_s("s:::%s\n", s);//s为空,无法打印
free(s);//正常
return 0;
}
//正常,s可以打印的代码
#include<iostream>
using namespace std;
void func(char** p)
{
char* tmp = (char*)malloc(sizeof(char)*128);
strcpy_s(tmp, 128, "hello");
*p = tmp;
}
int main()
{
char* s = NULL;
func(&s);
printf_s("s::::%s\n", s);//s打印出来hello
free(s);
system("pause");
return 0;
}