当前位置:  开发笔记 > 编程语言 > 正文

从动态数组中删除元素后,我需要在memmove后重新分配吗?

如何解决《从动态数组中删除元素后,我需要在memmove后重新分配吗?》经验,为你挑选了0个好方法。

我正在研究C中的ArrayList实现.ArrayList存储指针(void*),这意味着ArrayList是一个动态的指针数组.我在这里如何从ArrayList中删除一个元素:

typedef struct
{
    void* ptr; // pointer of array (beginning)
    int length; // pointer count
}ArrayList;

void ArrayList_Remove(ArrayList *list, int index)
{
    memmove(
        list->ptr + (sizeof(void*) * index),
        list->ptr + (sizeof(void*) * (index + 1)),
        (list->length - index) * sizeof(void*)
    );
    list->length--;
    // Do I need to realloc list->ptr to free space?
    // list->ptr = realloc(list->ptr, list->length * sizeof(void*));
}

正如我在代码中评论的那样,我需要重新分配list->ptr还是memmove会这样做?

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有