Cremove
でJavaのforに相当するものを書こうとしています.ArrayList
これが私のコードです。index がリスト内の有効なインデックスであると想定しています。
void arrayListRemove(ArrayList* list, int index){
int i;
if (arrayListSize(list)==1){
list->size = 0;
free(list->data);
list->data = NULL;
} else {
for(i=index;i<arrayListSize(list)-1;i++){
list->data[i] = list->data[i+1];
}
list->data = realloc(list->data, (arrayListSize(list) - 1) * sizeof(void*));
if (list->data != NULL){
--list->size;
} else {
exit(1);
}
}
}
これは正しいです?
コードはarrayListSize(list) == 1
チェックなしで機能しますか? つまり、 arrayListrealloc(list->data, 0)
を解放しますか? 何realloc(ptr, 0)
ができるかについて、オンラインで相反するものを見てきました。