考虑以下代码行:
char* f = (char *)(malloc(10240 * sizeof(char)));
scanf(%s, f);
现在当输入是一个包含任何no的字符串时。对于小于10240的字符,这个动态数组中的其余内存会发生什么?
如果我想在不改变此动态数组大小的情况下删除此动态数组的元素,该怎么办?
答案 0 :(得分:1)
当你只喝一杯水时,5加仑水桶会发生什么?它仍然是一个5加仑的桶,它只是坐在那里大部分是空的。如果你想回收其他用途的空间,你可以做相当于将水倒入一个较小的杯子并返回桶(即,分配一个新的内存块,大到足够你的字符串,复制字符串,然后free()
大块),或使用realloc()
神奇地收缩桶。
答案 1 :(得分:0)
现在当输入是一个包含任何no的字符串时。对于小于10240的字符,这个动态数组中的其余内存会发生什么?
什么都没发生。它可供您使用,但您不需要使用它或做任何事情。