如何释放无符号指针数组及其元素(calloc)

时间:2013-02-25 08:38:13

标签: arrays pointers free unsigned calloc

释放用cmallc分配的无符号指针数组的最佳方法是什么?

 uint8_t *buf;
 buf = cs_calloc(ca->len + 13);

我喜欢这样,但我知道这不太正确,因为我收到了编译警告:

  

警告:传递'free'的参数1使得指针来自整数   没有演员

for (i = 0; i < ca->len + 13; i++)
{   
 free(buf[i]);
buf[i] = NULL;
}

free(buf);

这里是cs_calloc代码:

void *cs_calloc(size_t size){

 return (calloc (1,size));
 }

我的问题是 1.我自由的方式,buf,我的意思是先在循环中释放每个数组的元素(free(buf [i]) 是正确的?我需要释放数组的元素,并释放上面的数组

  1. 为什么我会收到编译警告,如果错误,有人可以纠正我释放分配内存的方式(请写下代码应该如何纠正?
  2. 提前致谢

1 个答案:

答案 0 :(得分:1)

你只需要free(buf)而不是更多 - 所以只需删除for就可以了。尝试free(buf[i])是错误的,并会欺骗库将buf[i](一个小整数)视为指针。

只有一条简单的规则:仅freemalloccalloc收到的内容。


  

为什么发生编译警告

您收到警告是因为当free需要指针时,您使用整数调用free