【发布时间】:2018-11-29 07:43:45
【问题描述】:
假设我有一个 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 就足够了?
【问题讨论】:
标签: c memory memory-management malloc