我有些困惑,使用 malloc
分配内存时需要提供一个大小,但有时你不知道此时需要多大的空间,所以你要么分配大量的内存(这听起来并不明智,因为你可能不会全部使用),要么在初始缓冲区大小变得太小时使用 realloc
。这两种选择都是有效的吗?第二种听起来不错,但文档说 realloc
可能会将内存块移动到新位置,这听起来像一个非常糟糕/难以处理的情况(例如,如果你有多个指针指向同一地址,在调用 realloc
时它们都将无效)。作为一个 C 初学者,有人可以解释一下如何处理可能或可能不会增长以占用大量内存的缓冲区的情况吗?
stdio.h
中的BUFSIZ
宏并在空间不足时复制它是常见的方法。 - Adriánmalloc_size()
等。 - user529758