1

我的示例程序如下。

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
}

我的实际需求:

  1. void* 应该在function1中分配
  2. 应该通过 function2 和 function3
  3. 内存必须仅在 function3 中分配。
  4. 数据必须在function2和function3中访问

你能帮我怎么做吗?

谢谢,笨蛋

4

1 回答 1

0

OP表达了相互矛盾的需求data

function1(),data是一个“指向void 的指针”。
然而在function3()OP 中想要data成为“...... 100 字节的数据”。

一个更典型的范式datafunction1()

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
  }
}
于 2013-10-19T19:16:08.283 回答