【发布时间】:2020-08-03 21:21:01
【问题描述】:
对于我的应用程序,我需要在全局内存中声明一个大的std::array。它的总大小约为 1GB。所以我像这样声明了一个全局变量:
#include<array>
std::array<char,1000000000> BigGlobal;
int main()
{
//Do stuff with BigGlobal
}
代码编译良好。当我运行应用程序时,我收到错误消息:
应用程序无法正确启动 (0xc0000018)。点击确定关闭应用程序
我正在使用 Visual Studio 2017。我知道堆栈保留大小有一个 MSVC 链接器选项。但它只与局部变量有关,与全局变量无关。你能帮我解决这个问题吗?
【问题讨论】:
-
有什么原因不能在全局范围内使用
std::vector,并在main的第一条语句中调整它的大小? -
你是编译成 32 位还是 64 位的可执行文件?
-
@Botje 我正在以 64 位模式编译。
-
@Bathsheba 您提出的解决方法似乎有效。您想发布您的建议作为答案吗?
-
@BlueTune:我已经尝试过了。
标签: c++ visual-c++ global-variables