ここにプログラミングスニペットがあります
void func1 (UInt8* data, size_t length)
{
UInt8 *data2;
//do some actions to populate data2 with valid data;
length = 12;
data = malloc(length);
memset(data, 0 , length);
memcpy(&data[0], &data2[9] , length);
return;
}
void main()
{
void *data;
size_t dataSize;
func1 (data, dataSize)
printf ("%s", data);
}
ここでの問題は、func1 から戻った後にデバッガーでデータのアドレスを見ると、0x0000 を指していることです。私の理解では、データはヒープに割り当てられているため、関数内で指していたアドレスを指し続ける必要があります。
ここで何が欠けていますか?