我正在编写从Python到C的接口,C中的数据结构是一些变量大小的数组。由于在初始化数组之前大小不是常量,因此我不知道数组的长度。
使数组大小为1000,其大小可能介于1到1000之间 - 这是一种不好的做法吗? 什么是更好的方法来做到这一点? malloc的?
上下文:该数组的指针将用于通过网络作为应用层协议发送,因此我需要将数据作为数组。
答案 0 :(得分:6)
如果分配1000个元素会给平台上的可用内存带来压力,那么这只是一个不好的做法。只有1000个元素,在服务器或台式机上很少会出现问题;它可能是嵌入式系统中的一个问题。如果您正在考虑预分配1M或更多元素,特别是如果正常情况是1k元素,那么这可能是一种过度杀伤,即使在大型机器上也是如此,尽管这并不是完全明确的。堆栈大小有限,但全局变量通常很大。
如果有1001项需要处理,那么后备计划是什么?当有更多行时,您的测试是否会验证行为?忽略这个问题是不可接受的 - 它可能导致缓冲区或阵列溢出。如果你恢复动态分配,也许你应该一直动态分配(至少你知道动态内存分配代码的测试方式)。如果您只是拒绝额外的元素并且对用户没问题,那么您可以简单地使用固定大小并检查您是否超出它。