gpt4 book ai didi

c - 释放分配给数组任意位置的内存

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:18 25 4
gpt4 key购买 nike

我正在编写代码来管理对数组元素的插入和删除。我知道链表或其他一些数据结构更适合于此,但我仅限于使用数组。

数组分配的额外内存是通过使用realloc() 函数来管理的。但是,对于删除,我必须释放分配给最后一个元素的内存。为此,我尝试使用 free (a + n)n 代表最后一个元素,但是,这最终导致崩溃,例如:

*** Error in `./a.out': munmap_chunk(): invalid pointer: 
0x000000000158f018 ***
Aborted (core dumped)

我认为崩溃是预料之中的,因为操作系统管理着堆的分配列表,而 a 本身是通过 malloc() 分配的,操作系统不知道 a + n 的任何分配,导致硬错误。

我应该如何释放存储在数组中的最后一个元素?

最佳答案

使用realloc 缩小分配:

array_size--;
array = realloc(array, array_size);

关于c - 释放分配给数组任意位置的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com