增加文本段与增加数据段
Growing the text segment vs. growing the data segment
当给定增长文本段或数据段的选择时,哪一组标准可以决定选择?
我不知道不同配置(dynamically/statically 链接、PIC、非 PIC 等)在编译时或执行时的差异和影响。所以我要问的是所涉及的权衡是什么。
更具体:它通过使用静态字符数组在编译时增长,基本上使它成为 const 或 not,而 constness 显然决定它是否以文本形式结束。这是为什么?
代码段是只读的、按需加载的(可以直接从磁盘分页)并且可以共享。
相比之下,数据段是可写的(由页面文件或 RAM 支持),因此不共享。
因此,如果您可以选择增加任何一个,则更喜欢较小的数据段,因为数据段中相同数量的 space 通常会消耗更多资源,即使您的程序确实如此不能同时 运行 多次。
标记你能做的一切还有一个额外的好处const
:
不尊重数据不应更改的事实更有可能被编译器捕获,如果不是更晚的话 运行time(内存保护),而不是默默地破坏你的状态。
当给定增长文本段或数据段的选择时,哪一组标准可以决定选择?
我不知道不同配置(dynamically/statically 链接、PIC、非 PIC 等)在编译时或执行时的差异和影响。所以我要问的是所涉及的权衡是什么。
更具体:它通过使用静态字符数组在编译时增长,基本上使它成为 const 或 not,而 constness 显然决定它是否以文本形式结束。这是为什么?
代码段是只读的、按需加载的(可以直接从磁盘分页)并且可以共享。
相比之下,数据段是可写的(由页面文件或 RAM 支持),因此不共享。
因此,如果您可以选择增加任何一个,则更喜欢较小的数据段,因为数据段中相同数量的 space 通常会消耗更多资源,即使您的程序确实如此不能同时 运行 多次。
标记你能做的一切还有一个额外的好处const
:
不尊重数据不应更改的事实更有可能被编译器捕获,如果不是更晚的话 运行time(内存保护),而不是默默地破坏你的状态。