一级指针做入参,函数内部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;
}