Seb*_*n S 6 c malloc free memory-leaks memory-management
据我所知,从其他SO问题的答案,我不需要释放固定长度的数组,如下所示:
unsigned char buffer[16];
但一般来说,每当打电话时都必须释放内存malloc,的memcpy等
我的问题是:我需要free在以下场景中打电话:
unsigned char buffer[16];
memcpy(buffer, source, 16);
...
free(buffer); // needed?
更确切地说:根据变量的声明或初始化,决定是使用堆还是堆栈?
Iha*_*imi 16
你只free()指针返回由malloc()/ calloc()/ realloc(),传球不是由这些函数返回一个指针任何未定义行为.
在你分配数组的情况下
unsigned char buffer[16];
一个函数内,数组会自动当它得到超出范围,函数返回即当matically释放.
事实上,该数组仅在声明它的范围内有效
if (condition != 0)
 {
    unsigned char buffer[16];
 }
/* here it was already deallocated */
上面的例子是一个很好的例子,证明-Wshadow使用gcc启用.
| 归档时间: | 
 | 
| 查看次数: | 8247 次 | 
| 最近记录: |