【发布时间】:2019-09-16 04:24:30
【问题描述】:
我正在考虑创建一个全局静态结构,如下所示:
typedef struct {
Thing things[1024];
} MyBigStruct;
static MyBigStruct s;
有什么理由,无论是内存还是其他,为什么不将大型结构对象放在“静态全局区域”中?这个区域有限制吗?我应该在堆中用malloc 声明这个吗?
请不要参考针对全局变量的编码实践,而仅参考技术方面。
【问题讨论】:
-
这个领域怎么可能没有限制?
-
一般来说,全局数据结构是一种不好的代码味道。它们制作了无法并行化的脆弱程序。例外情况是,如果这确实是一个静态常量:它的值永远不会改变。你的问题的其余部分没有一般的答案。正如@ScottHunter 所说,总是有限制的。它们完全是特定于环境的。小型嵌入式控制器将不同于大容量服务器。甚至对于给定的机器,操作系统和编译器都会获得投票。