Я использую Dev C++ для написания программы моделирования. Для этого мне нужно объявить одномерный массив с типом данных double
. Он содержит 4200000
элементов - например, double n[4200000]
.Объявление большого массива на стек
Компилятор не обнаруживает ошибки, но программа завершает выполнение. Я проверил, и программа отлично работает для массива, содержащего 5000
элементов.
Теперь я знаю, что объявление такого большого массива в стеке не рекомендуется. Однако дело в том, что для моделирования требуется, чтобы я вызывал определенные элементы из массива несколько раз - например, мне может понадобиться значение n[234]
или n[46664]
для данного расчета. Поэтому мне нужен массив, в котором легче просеивать элементы.
Есть ли способ объявить этот массив в стеке?
Для Linux/GCC см http://stackoverflow.com/questions/2279052/increase-stack-size -in-linux-with-setrlimit, для Windows/gcc, см. http://stackoverflow.com/questions/156510/increase-stack-size-on-windows-gcc и для MSVC, http://msdn.microsoft. com/en-us/library/tdkhxaks% 28v = vs.110% 29.aspx - см. там. –
Я не думаю, что вы можете использовать 'std :: vector ar (4200000);'? Остальное использует обычный регулярный массив для индексирования и т. Д. –
WhozCraig
Непонятно, почему этот массив должен находиться в стеке. Он будет работать так же хорошо, когда вы выделите его из кучи. –