大型动态数组中未使用的内存会发生什么变化?

时间:2017-01-13 19:20:11

标签: c dynamic-memory-allocation dynamic-arrays

考虑以下代码行:

char* f = (char *)(malloc(10240 * sizeof(char)));
scanf(%s, f);

现在当输入是一个包含任何no的字符串时。对于小于10240的字符,这个动态数组中的其余内存会发生什么?

如果我想在不改变此动态数组大小的情况下删除此动态数组的元素,该怎么办?

2 个答案:

答案 0 :(得分:1)

当你只喝一杯水时,5加仑水桶会发生什么?它仍然是一个5加仑的桶,它只是坐在那里大部分是空的。如果你想回收其他用途的空间,你可以做相当于将水倒入一个较小的杯子并返回桶(即,分配一个新的内存块,大到足够你的字符串,复制字符串,然后free()大块),或使用realloc()神奇地收缩桶。

答案 1 :(得分:0)

  

现在当输入是一个包含任何no的字符串时。对于小于10240的字符,这个动态数组中的其余内存会发生什么?

什么都没发生。它可供您使用,但您不需要使用它或做任何事情。