如何释放c中连续分配的内存的一部分?

问题描述 投票:-2回答:1

我是C的新手。我有一个程序可以使用calloc()分配一些存储指针的内存。这些指针指向我存储人数据的内存中的位置。每个人一个指针。因此,当我需要删除数据时,我free()指向这些数据的指针。但是带有指针的内存仍然具有该指针。我也想释放那个地方。据我所知,我不能说free(ptr+5)。我该怎么办?

c pointers dynamic-memory-allocation free
1个回答
0
投票

您不能释放已分配块的开始或中间位置,而只剩下已分配块的末尾;因此(用于删除数组中的条目):

  • 将要删除的条目后的所有内容移动到分配的块的末尾,直到分配的块的开始;因此要删除的片段在末尾

  • 使用realloc()减小分配的块的大小(以释放最后的块)

© www.soinside.com 2019 - 2024. All rights reserved.