【发布时间】:2018-08-29 19:59:58
【问题描述】:
我有一个结构,例如
typedef struct bignum {
long number_of_digits;
char *digit;
} bignum;
我想声明一个 bignum 类型的数组,数组大小会动态改变,所以我使用了malloc(),realloc()
我可以使用realloc() 缩小数组而不会出现内存泄漏。
收缩代码示例
if(free_slots == 50)
{
big_num_Arr =(bignum *) realloc (big_num_Arr,(capacity-40)*sizeof(bignum));
free_slots = 10;
capacity -= 40;
}
【问题讨论】:
-
如果结构有动态分配的数据,它们必须被释放。 realloc 无法为您做到这一点
-
什么是
free_slots,什么是capacity? -
"数组大小将动态改变"你是指
bignum数组的大小,还是每个digit数组的大小?或两者?在复杂化之前,您应该让您的 bignum 函数与固定长度的数组完美配合。 -
big_num_Arr 这个数组要改了,free_slots和容量都不重要,,,都是if后面的第一行,