我的示例程序如下。
void function1 () {
void **data
function2(data);
//Will access data here
}
void function2(void **data) {
function3(data);
//Will access data here
}
void function3(void **data) {
//Need to allocate memory here says 100 bytes for data
//Populate some values in data
}
我的实际需要:
你能帮我解决一下这个问题吗?
谢谢, Boobesh
答案 0 :(得分:0)
OP表达data
在function1()
中,data
是指向无效的“指针”。
但在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
中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
}
}