Durante la scrittura del codice C++ ho appreso che utilizzare lo stack per archiviare la memoria è una buona idea.Rilevamento dello stack pieno
Ma di recente mi sono imbattuto in un problema:
ho avuto un esperimento che aveva il codice che si presentava così:
void fun(const unsigned int N) {
float data_1[N*N];
float data_2[N*N];
/* Do magic */
}
Il codice exploted con un guasto seqmentation a caso, e non avevo idea perché.
Si è scoperto che il problema era che stavo cercando di memorizzare cose che erano grandi sul mio stack, c'è un modo per rilevarlo? O almeno a scoprire che è andato storto?
La tua domanda su C o C++? –
Penso che non sia possibile inizializzare una matrice sullo stack usando le variabili in C/C++! –
Quanto sono grandi i tuoi dati? Suggerisco di memorizzare 100 KB + dati nell'heap usando malloc/free. (Altre persone potrebbero suggerire un limite ancor più basso) – nhahtdh