const int L=10;
std::complex<double> c_array[L][L][L][L][L][L] // 6 dimensions
пространство, необходимое: 2 * 8 * 10^6 байтПростой многомерный массив C-стиль дает ошибку сегментации: 11
Он не должен использовать всю память, не так ли?
const int L=10;
std::complex<double> c_array[L][L][L][L][L][L] // 6 dimensions
пространство, необходимое: 2 * 8 * 10^6 байтПростой многомерный массив C-стиль дает ошибку сегментации: 11
Он не должен использовать всю память, не так ли?
Для каждого процесса существует ограничение размера стека. Поэтому, если вы действительно хотите создать этот массив локально (в стеке), единственным решением является увеличение ограничения размера стека для вашей программы. Как изменить ограничение размера стека, зависит от вашей ОС.
Альтернативой является создание этого массива в куче. Для этого вам нужно использовать «новое» ключевое слово следующим образом.
std::complex<double> *c_array = new std::complex<double>[L][L][L][L][L][L];
Может захотеть сохранить это в умном ptr. – Borgleader
Я бы переключил альтернативы. Увеличение стека действительно необычно и может иметь серьезные побочные эффекты в системе. – SomeWittyUsername
'ошибка: не может преобразовать 'std :: complex
Это очень большой массив. Я бы сделал ставку на переполнение стека. – chris
Является ли это локальной переменной? Если это так, все это попадает в стек, что может быть недостаточно большим. –
Вам не кажется, что, возможно, вы могли бы просто сделать это с помощью 1-мерного массива: 'vector> c_array (1000000)' –
paddy