我知道默认情况下,堆栈的最大大小是Windows上的2 MiBi和Linux上的8 MiBi。
的大小限制是什么?我需要知道的原因是我在可执行文件中嵌入了一些数据。
答案 0 :(得分:0)
一般情况下,文本和数据段是静态分配的,在大多数情况下,这些限制可以在操作系统中配置,理论上可以与内存一样多,同时牢记32位的3GB限制Linux,以及32位Windows平台上的4GB限制(包括缓存和图形内存等设备中使用的内存)。
在linux或unix上,以下情况也适用,一般来说,存在操作系统定义的限制,您还可以指定更具体的限制。默认情况下,linux / unix发行版之间的一般限制可能不同。有关如何获取限制设置的信息,请参阅http://linux.die.net/man/2/setrlimit有关此内容的手册页。请注意,文档似乎已过时:RLIMIT_DATA不再影响现代Linux上的堆,因为使用的分配函数已更改。
Windows没有可配置的限制,但对其静态进程内存使用DWORD变量,另请参阅https://superuser.com/questions/667593/is-it-possible-to-run-a-larger-than-4gb-exe。这意味着您的实际过程不能超过4GB。
一般来说: 1,2)在linux上:可配置,取决于分发。在Windows上:4GB。