增加文本部分与增长数据部分

时间:2015-01-14 16:58:18

标签: c embedded-linux

当选择增长文本片段或数据片段时,有哪些标准可以决定选择?

在给定不同配置(动态/静态链接,PIC,非PIC等)的情况下,我不知道编译或执行时的差异和影响。所以我要问的是所涉及的权衡取舍。

更具体:它通过使用静态char数组在编译时增长,基本上使它成为const或不成为const,而constness显然决定它是否以文本结尾。那是为什么?

1 个答案:

答案 0 :(得分:2)

代码段是只读的,需求加载的(可以直接从磁盘分页)并且可以共享。

相反,数据段是可写的(由分页文件或RAM支持),因此不会共享。

因此,如果您可以选择增长任何一个,则更喜欢较小的数据段,因为数据段中相同的空间量通常会消耗更多资源,即使您的程序不会同时运行多次。

标记您可以const的所有内容还有其他好处:
不尊重数据不应该更改的事实更有可能被编译器捕获,如果不是后来由运行时(内存保护)捕获,而不是静默地破坏您的状态。