我试图释放我从分配的向量中分配的指针malloc(),当我尝试删除第一个元素(index [0])时,它工作,当我尝试删除第二个(index [1])我收到这个错误:
malloc: *** error for object 0x100200218: pointer being freed was not allocated
Run Code Online (Sandbox Code Playgroud)
代码:
table->t = malloc (sizeof (entry) * tam);
entry * elem = &table->t[1];
free(elem);
Run Code Online (Sandbox Code Playgroud)
Sou*_*osh 11
你只能调用(或需要)free()on malloc()和由family 返回的指针.
引用C11,章节§7.22.3.3
[...]否则,如果参数与先前由内存管理函数返回的指针不匹配,或者如果通过调用
freeor 释放了空间realloc,则行为未定义.
在你的情况下,table->t(或&table->t[0])是指针,而不是&table->t[1].
也就是说,free()-ing table->t释放整个内存块,你不需要(你不能,而不是)单独/部分释放.有关详细信息,请参阅此答案.