【发布时间】:2020-11-15 00:06:00
【问题描述】:
在 C 语言中,当我们不知道要保存在数组中的数据的大小时。通常,我们指定的尺寸大于要求的尺寸。这不是说我们在滥用内存吗?因为,数组是按顺序存储在内存中的,所以处理器不会一直保存这些块以备将来使用,即使它们当前没有被使用?
【问题讨论】:
-
如果你不过分,没关系...假设你的程序需要从用户那里得到一个名字:
char name[100];没问题char name[1000000];是过度了。如果您非常非常内存受限,请以时间为代价使用动态内存(与处理用户输入无关)。 -
这取决于内存量和数组的定义方式。在 C++ 中,std::vector 分步分配内存,因此这是运行良好的类似数组的过度分配的示例。顺便说一句:阅读
malloc和realloc -
这个问题非常广泛。能否添加一些具体的代码示例。