呼び出し関数側でメモリ確保をしたいときは、ポインタへのポインタを用いるとよい。
<サンプル>
#include <stdio.h>
#include <stdlib.h>
//呼び出し関数側でメモリ確保
//引数はポインタへのポインタ
void allocate(char* *buffer)
{
*buffer = malloc(100);
}
int main(void)
{
char *buffer;
allocate(&buffer);//引数はポインタへのポインタ
free(buffer);
return 0;
}
<サンプル>
#include <stdio.h>
#include <stdlib.h>
//呼び出し関数側でメモリ確保
//引数はポインタへのポインタ
void allocate(char* *buffer)
{
*buffer = malloc(100);
}
int main(void)
{
char *buffer;
allocate(&buffer);//引数はポインタへのポインタ
free(buffer);
return 0;
}