我是C的新手。我有一个程序可以使用calloc()
分配一些存储指针的内存。这些指针指向我存储人数据的内存中的位置。每个人一个指针。因此,当我需要删除数据时,我free()
指向这些数据的指针。但是带有指针的内存仍然具有该指针。我也想释放那个地方。据我所知,我不能说free(ptr+5)
。我该怎么办?
您不能释放已分配块的开始或中间位置,而只剩下已分配块的末尾;因此(用于删除数组中的条目):
将要删除的条目后的所有内容移动到分配的块的末尾,直到分配的块的开始;因此要删除的片段在末尾
使用realloc()
减小分配的块的大小(以释放最后的块)