Допустим, у меня есть struct
для реализации векторов в C следующим образом:
struct cvector {
unsigned int size; // indicates number of element in the vector
unsigned int capacity; // indicates length of the array
int* data; // array to store the actual data
};
typedef struct cvector* cvector;
Затем я создаю этот вектор следующим образом:
cvector cvector_create() {
cvector retval = (cvector)malloc(sizeof(struct cvector));
retval->capacity = 8;
retval->size = 0;
retval->data = (int*)malloc(retval->capacity * sizeof(int));
return retval;
}
Я использую malloc
как для выделения памяти для структуры, так и для выделения памяти для внутреннего int
массива.
Для освобождения моего cvector
я использую это:
void cvector_free(cvector vector) {
free(vector);
}
Мой вопрос:Мне нужно отдельно освободить внутренний массив int
, например, так: free(vector->data)
или освобождает только struct
, достаточно?