Ho una matrice molto grande che deve essere lunga 262144 elementi (e potenzialmente molto più grande in futuro). Ho provato assegnazione della matrice sullo stack in questo modo:Come posso creare un array in C++ che si trova nell'heap invece dello stack?
#define SIZE 262144
int myArray[SIZE];
Tuttavia, sembra che quando provo e aggiungi elementi oltre un certo punto, i valori sono diverse quando si tenta di accedervi. Capisco che questo è perché c'è una quantità limitata di memoria nello stack, a differenza dell'heap che ha più memoria.
ho provato quanto segue senza molta fortuna (non si compila):
#define SIZE 262144
int *myArray[SIZE] = new int[SIZE];
E poi ho pensato di utilizzare malloc
, ma mi chiedevo se ci fosse un altro C++ modo simile di fare questo ...
#define SIZE 262144
int *myArray = (int*)malloc(sizeof(int) * SIZE);
Devo andare con malloc
?
cambiare "myArray [SIZE]" in "myArray" nel secondo blocco di codice. – eduffy
Vijay, questa non è una questione di apprendimento della sintassi. La prima opzione è corretta, fatta eccezione per la dimensione, e la seconda opzione è un bug abbastanza comune che merita di essere menzionato. Inoltre, questo sito non aiuta anche quando qualcuno non capisce la sintassi? –
Per avere un errore di sintassi in una domanda non è una cattiva domanda. –