释放分配给数组任意位置的内存
Freeing up memory allocated for an arbitrary position at an array
我正在编写代码来管理对数组元素的插入和删除。我知道链表或其他一些数据结构更适合这个,但我仅限于使用数组。
数组分配的额外内存通过使用 realloc()
函数进行管理。但是,对于删除,我必须释放分配给最后一个元素的内存。为此,我尝试使用 free (a + n)
、n
表示最后一个元素,但是,这最终导致崩溃,例如:
*** Error in `./a.out': munmap_chunk(): invalid pointer:
0x000000000158f018 ***
Aborted (core dumped)
我认为崩溃是预料之中的,因为 OS 管理堆的分配列表,而 a
本身是通过 malloc()
分配的,OS 不知道 a + n
的任何分配,导致硬错误。
我应该如何释放存储在数组中的最后一个元素?
使用realloc
缩小分配:
array_size--;
array = realloc(array, array_size);
我正在编写代码来管理对数组元素的插入和删除。我知道链表或其他一些数据结构更适合这个,但我仅限于使用数组。
数组分配的额外内存通过使用 realloc()
函数进行管理。但是,对于删除,我必须释放分配给最后一个元素的内存。为此,我尝试使用 free (a + n)
、n
表示最后一个元素,但是,这最终导致崩溃,例如:
*** Error in `./a.out': munmap_chunk(): invalid pointer:
0x000000000158f018 ***
Aborted (core dumped)
我认为崩溃是预料之中的,因为 OS 管理堆的分配列表,而 a
本身是通过 malloc()
分配的,OS 不知道 a + n
的任何分配,导致硬错误。
我应该如何释放存储在数组中的最后一个元素?
使用realloc
缩小分配:
array_size--;
array = realloc(array, array_size);