C++ 这个错误是什么;bash:7行:4913被杀死;由铿锵编译器发出?

C++ 这个错误是什么;bash:7行:4913被杀死;由铿锵编译器发出?,c++,c++11,C++,C++11,我不熟悉叮当声。这段代码怎么了 #include <limits> const int y = std::numeric_limits<int>::max(); int a[y]; int main() { } #包括 const int y=std::numeric_limits::max(); int a[y]; int main(){ } 请参阅错误消息。这意味着您的程序,a.out被终止,可能是因为您试图在阵列中分配太多内存。如果您的机器是32位机器,您

我不熟悉叮当声。这段代码怎么了

#include <limits>

const int y = std::numeric_limits<int>::max();

int a[y];

int main() {
}
#包括
const int y=std::numeric_limits::max();
int a[y];
int main(){
}

请参阅错误消息。

这意味着您的程序,
a.out
被终止,可能是因为您试图在阵列中分配太多内存。如果您的机器是32位机器,您尝试分配8 GiB内存,但32位编译总共只能访问4 GiB(代码和数据)。如果您的计算机是64位计算机(并且您的编译是64位编译),它可能仍在尝试分配8 GiB,并且可能已经成功。

请注意,错误不是来自
clang
编译器;它来自于试图运行
a.out
程序。在64位机器上,当我编写使用数组的代码时,程序未能编译,错误如下:
/tmp/ccupZA0o.o:In function
\u static\u initialization\u and\u destruction\u 0':`和
/home/jleffler/gcc/v4.8.2/include/c++/4.8.2/iostream:74:(.text.startup+0xa5):重新定位被截断以适应:R_X86_64_32针对“.bss”
和(几乎是重复)
/home/jleffler/gcc/v4.8.2/include/c++/4.8.2/iostream:74:(.text.startup+0xb4):重新定位被截断以适应:R_X86_64_32针对“.bss”
collect2:错误:ld返回1个退出状态,仅供参考,我从问题中逐字提取代码,并将其放入maxmem.cpp中。然后,我使用GCC4.8.2和命令行在64位机器上编译了它:
g++-g-O3-std=c++11-Wall-Wextra-Werror-pedantic maxmem.cpp-o maxmem
。编纂成功,;程序运行(非常快,因为阵列已优化)。
-pedantic
阻止了GCC对VLA的支持,这并不是必须的,因为数组不是VLA,只是一个相当大的普通数组。@JonathanLeffler感谢您提供的信息,我尝试了它,是的,它被编译了。我缺少的是
-std=c++11
。如果没有,它会抱怨即使存储在常量整数中,限制也不是常量值。