Octorber 5 th Dynamic array Practice

Modified

2025-11-12

void _dynArraySetCapacity(struct dynArr *v, int newCapacity) {
    if(newCapacity < v->size){
        v->size = newCapacity;
    }
    TYPE *newArray = (TYPE *)malloc(sizeof(TYPE) * newCapacity);
    for(int i = 0;i<v->size;++i){
        newArray[i]= v->data[i];
    }
    free(v->data);
    v->data = newArray;
    v->capacity = newCapacity;
    
}

void _dynArraySetCapacity(struct dynArr *v, int newCapacity) {
    assert(newCapacity > 0);
    if (newCapacity < v->size) {
        v->size = newCapacity; /* 截断已有元素,防止越界 */
    }
    TYPE *newData = (TYPE *) malloc(sizeof(TYPE) * newCapacity);
    assert(newData != 0);

    for (int i = 0; i < v->size; ++i) {
        newData[i] = v->data[i];
    }

    free(v->data);
    v->data = newData;
    v->capacity = newCapacity;
}

malloc(sizeof(TYPE)*newCapacity) free(v->data); int i = 0 ; i < v->size not i < newCapacity assert(newCapacity > 0); we just need to assign a new array, and change the pointer of the dynamic array to new array, no need to assign a new dynamic array