我正在研究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
会这样做?