2016-08-23 34 views
-2

我正在声明一个数组,其长度由一个变量定义。当变量的值是5时,它工作正常,但是当它是我需要的大小(约52000)时,它不会,但是当我不使用变量来声明大小,而是手动输入它时,它不会崩溃。 (一旦我实际上使用我的程序进行调试以外的其他工作,将无法工作)。从这我可以得出结论,它不是导致我的程序崩溃或使用变量的数组大小,但以某种方式使用相同的变量作为工作,但具有不同的值。我什至尝试使用指针而不是变量,但它没有工作。精确的代码行是int half1[half];。该过程返回-1073741571。为什么我的C++程序崩溃时,我这样声明一个数组?

+0

你不应该在你的数组声明中使用一个大小的变量,只能使用'const'变量作为大小。 –

+3

平台?编译器?实际[MCVE](https://stackoverflow.com/help/mcve)? – Useless

+1

如果你需要一个数组,并且在运行时不知道大小是多少,可以使用'std :: vevctor'。 – NathanOliver

回答

2

有没有想过这个网站的名字是什么意思?你可能正在陷入这样一个问题,在堆栈中声明一个大数组。除此之外,我想你正在使用GNU gcc。通常非常量大小的数组不是有效的C/C++,您不会使用其他编译器编译此代码。出于这两个原因,你应该在堆上定义数组(使用new关键字),或者只使用std :: vector。

+2

由于无法使用int foo [run_time_determined_size];'的原因,不能使用'std :: array'。 – NathanOliver

+0

@NathanOliver谢谢,纠正 – jszpilewski

相关问题