基本上所有的操作系统都会限制进程使用的内存大小,好像 Windows 下默认的是 1MB,但是对于科学计算和其他应用来说,经常要申请较大的内存来储存数组、向量等,如果没有预先设置,在定义大的数组时,很可能会出现 segment fault,比如以下的代码:
double x[800][800]
如果你使用的是 Visual Studio,可以通过 “Linker -> System” 来设置stack commit size
和 stack reserve size
以增加进程使用的内存大小,需要注意的是,这种方法需要对所有的编译方案都进行设置才行,如果你想在 Debug 和 Release 方案中都增大使用的内存空间,就分别需要设置这两种状态的stack commit size
和 stack reserve size
,操作其实还是挺方便的。
如果你使用的是一些跨平台的 IDE,比如 JetBrains 家的 Clion,本身不提供stack commit size
和 stack reserve size
的设置选项,但是 Clion 使用 CMake 作为默认的编译系统,完全可以通过 CMake 来设置链接器的属性,比如我想申请使用 999,999KB 的空间,那么可以在 CMake 里加上:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,999999")
设置 CMake 的链接器属性应该是对所有的编译方案都有效的,也就是 Debug 和 Release 这些不需要重复设置,比起 Visual Studio 更加方便一点。
原文地址:fangs.in
网友评论