在预先关注C阵列的情况下,过度提供了不良练习



我正在努力编写从Python到C的接口,并且C中的数据结构是某些变量的大小的数组。由于初始化数组之前的大小不是常数,因此我不知道数组的长度。

正在使数组尺寸1000,其中大小可能在1到1000之间的任何位置 - 这是不良习惯吗?有什么更好的方法是什么?malloc?

上下文:该数组的指针将用于通过网络作为应用程序层协议发送,因此我需要数据作为数组。

如果分配1000个元素会强调平台上可用的内存,这只是一个不好的做法。只有1000个元素,这很少是服务器或台式机上的问题。在嵌入式系统中,这可能是一个问题。如果您正在考虑预先分配1M或更多元素,尤其是如果正常情况将是1K元素,那么即使在大型机器上,这可能是过度的,尽管这并不完全清晰。堆栈尺寸有限,但是全球变量通常可能很大。

如果事实证明有1001个项目要处理,后备计划是什么?您的测试是否会在有更多行时验证行为?忽略问题是不可接受的 - 它可能导致缓冲区或数组溢出。如果您恢复为动态分配,也许您应该一直在动态分配(至少这样您知道测试动态内存分配代码)。如果您只需拒绝额外的元素,这对用户来说是可以的,那么您只需使用固定尺寸,并检查您不会溢出。

最新更新