c - 增长文本段与增长数据段

标签 c embedded-linux

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

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

更具体:它通过使用静态字符数组在编译时增长,基本上使其成为常量或非常量,而常量显然决定它是否以文本形式结束。这是为什么?

最佳答案

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

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

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

将所有可以标记为 const 的内容还有一个额外的好处:
未能尊重数据不应更改的事实更有可能被编译器捕获,甚至稍后被运行时(内存保护)捕获,而不是默默地破坏您的状态。

关于c - 增长文本段与增长数据段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948375/

相关文章:

linux - 无法在 yocto 中安装共享库

linux - 嵌入式Linux : Hardware access

embedded-linux - 无法从 buildroot 获取未剥离的运行时库

c - 在C中获取文件光标位置

c - 将 scanf 和 EOF 添加到程序中

c - 带 char * 的 memcpy 不起作用

linux - 确定嵌入式设备上是否存在内存泄漏

c - C %f 的 printf 在小数点后留下 6 个 0

c - 如何在 C 中将不同大小的数字签名扩展到 16 位?

linux - 如何在 Linux 上更改 tty 组(使用 buildroot 构建)