释放用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]) 是正确的?我需要释放数组的元素,并释放上面的数组
提前致谢
答案 0 :(得分:1)
你只需要free(buf)
而不是更多 - 所以只需删除for
就可以了。尝试free(buf[i])
是错误的,并会欺骗库将buf[i]
(一个小整数)视为指针。
只有一条简单的规则:仅free
从malloc
或calloc
收到的内容。
为什么发生编译警告
您收到警告是因为当free
需要指针时,您使用整数调用free
。