OP表达了相互矛盾的需求data
在function1()
,data
是一个“指向void 的指针”。
然而在function3()
OP 中想要data
成为“...... 100 字节的数据”。
一个更典型的范式data
是function1()
void function1 () {
void *data = NULL;
function2(&data); // Address of data passed, so funciton2() receives a void **
//Will access data here
unsigned char *ucp = (unsigned char *) data;
if ((ucp != NULL) && (ucp[0] == 123)) {
; // success
}
...
// Then when done
free(data);
data = 0;
}
data
那么在这种情况下, in的内存分配function3()
是
void function3(void **data) {
if (data == NULL) {
return;
}
// Need to allocate memory here. Say 100 bytes for data
size_t Length = 100;
*data = malloc(Length);
if (data != NULL) {
//Populate some values in data
memset(*data, 123, Length);
}
}
void function2(void **data) {
if (data == NULL) {
return;
}
function3(data);
unsigned char *ucp = (unsigned char *) *data;
// Will access data here
if ((ucp != NULL) && (ucp[0] == 123)) {
; // success
}
}