这是编程片段
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。我的理解是,由于数据是在堆上分配的,它应该继续指向它在函数中指向的任何地址。
我在这里想念什么?