const int L=10;
std::complex<double> c_array[L][L][L][L][L][L] // 6 dimensions
Raum benötigt: 2 * 8 * 10^6 BytesEinfacher mehrdimensionale C-Stil-Array gibt Segmentierungsfehler: 11
Es soll nicht die gesamten Speicher aufbrauchen, nicht wahr?
const int L=10;
std::complex<double> c_array[L][L][L][L][L][L] // 6 dimensions
Raum benötigt: 2 * 8 * 10^6 BytesEinfacher mehrdimensionale C-Stil-Array gibt Segmentierungsfehler: 11
Es soll nicht die gesamten Speicher aufbrauchen, nicht wahr?
Es gibt eine Stapelgrößenbeschränkung für jeden Prozess. Wenn Sie dieses Array wirklich lokal (im Stapel) erstellen möchten, besteht die einzige Lösung darin, die Begrenzung der Stapelgröße für Ihr Programm zu erhöhen. Wie Sie das Limit für die Stapelgröße ändern, hängt von Ihrem Betriebssystem ab.
Alternative besteht darin, dieses Array im Heap zu erstellen. Dazu müssen Sie das Schlüsselwort "new" wie folgt verwenden.
std::complex<double> *c_array = new std::complex<double>[L][L][L][L][L][L];
Vielleicht möchten Sie das in einem Smart-Ptr speichern. – Borgleader
Ich würde die Alternativen wechseln. Das Erhöhen des Stacks ist wirklich ungewöhnlich und kann schwerwiegende Systemnebenwirkungen haben. – SomeWittyUsername
'Fehler: kann 'nicht konvertieren std :: complex
Das ist ein sehr großes Array. Ich würde einen Stapelüberlauf wetten. – chris
Ist das eine lokale Variable? Wenn dies der Fall ist, landet das alles auf dem Stapel, der möglicherweise nicht groß genug ist. –
Denkst du nicht, dass du das vielleicht mit einem 1-D-Array machen könntest? 'Vector> c_array (1000000)' –
paddy