adr*_*min 1 c malloc memory-leaks
回到几年前我写的一些C代码,我觉得它应该是泄漏记忆,但我找不到它的迹象,我想检查我的假设.
我有这样的结构:
struct BitArray {
....
char *bits;
....
}
Run Code Online (Sandbox Code Playgroud)
bits 动态分配如下:
bArray->bits = (char *)calloc(1, 1 << shiftNumber);
Run Code Online (Sandbox Code Playgroud)
和free-ed像这样:
free(nextBA->bits);
Run Code Online (Sandbox Code Playgroud)
但不应把漏内存-也就是说,它只会free在最初的char那bits点?free以这种方式分配内存的正确方法是什么?
不,它不会泄漏内存.事实上,这一切都很好.
您正在传递之前由内存管理功能传递的内容(calloc此处).所以没关系.
从标准7.22.3.1开始注意
free函数导致ptr指向的空间被释放,即可用于进一步分配.如果ptr是空指针,则不执行任何操作.否则,如果参数与先前由内存管理函数返回的指针不匹配,或者如果通过调用free或realloc释放了空间,则行为未定义.
那么这肯定不是这样的.所以没关系.
不会free分配的块.
你做的方式是正确的方式.