gpt4 book ai didi

c - 预分配 C 数组的过度配置是不好的做法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:16 24 4
gpt4 key购买 nike

我正在编写从 Python 到 C 的接口(interface),C 中的数据结构是一些变量大小的数组。由于在初始化数组之前大小不是常量,所以不知道数组的长度。

使数组大小为 1000,其中大小可能在 1 到 1000 之间的任何地方——这是一种不好的做法吗?什么是更好的方法来做到这一点?分配?

上下文:数组的这个指针将用于作为应用层协议(protocol)通过网络发送,所以我需要数据作为数组。

最佳答案

如果分配 1000 个元素会对平台上的可用内存造成压力,这只是一种不好的做法。只有 1000 个元素,这在服务器或台式机上很少会成为问题;这可能是嵌入式系统中的一个问题。如果您正在考虑预分配 1M 或更多元素,特别是如果正常情况下是 1k 元素,那么这可能是一种矫枉过正,即使在大型机器上也是如此,尽管这并不完全明确。堆栈大小是有限的,但全局变量通常可能很大。

如果结果有 1001 个项目要处理,回退计划是什么?当有更多行时,您的测试是否会验证行为?忽略这个问题是 Not Acceptable ——它会导致缓冲区或数组溢出。如果你恢复到动态分配,也许你应该一直动态分配(至少你知道动态内存分配代码已经过测试)。如果您只是要拒绝额外的元素并且这对用户来说是可以的,那么您可以简单地使用固定大小并检查您是否不会溢出它。

关于c - 预分配 C 数组的过度配置是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com