View Full Version : [C++] malfunzionamento
#include <iostream>
using namespace std;
const int N=3065663;
int main()
{
int v[N];
for (int i=0;i<N;i++)
{
v[i]=i+1;
}
}
ho fatto questo programma semplicissimo,viene compilato senza problemi ma crasha immediatamente come provo ad eseguirlo.
sembra che il limite sia const int N=500000.
sapreste dirmi dove sbaglio?
Teo@Unix
10-06-2010, 19:30
A prima vista, credo tu abbia raggiunto le massime dimensioni dello stack, meglio se usi new(), dato che stiamo parlando di C++, new usa l'heap.
A meno che sia un'altro il problema ma non credo...
dunque devo lavorare con i puntatori?
A prima vista, credo tu abbia raggiunto le massime dimensioni dello stack, meglio se usi new(), dato che stiamo parlando di C++, new usa l'heap.
A meno che sia un'altro il problema ma non credo...ma il limite dello stack è lo heap e il limite dello heap è lo stack, quindi che cambia? :asd:
Teo@Unix
10-06-2010, 23:51
concordo, ma sempre meglio l'heap...
DanieleC88
11-06-2010, 00:51
ma il limite dello stack è lo heap e il limite dello heap è lo stack, quindi che cambia? :asd:
Il limite non come indirizzo, ma come dimensioni. Lo stack solitamente ha una grandezza di qualche megabyte, nell'heap puoi allocare molta più roba.
qual'è quindi la sintassi corretta per allocare il mio array nell'heap?
DanieleC88
11-06-2010, 01:11
int v[] = new int[N];
// ...
delete v;
tomminno
11-06-2010, 08:47
qual'è quindi la sintassi corretta per allocare il mio array nell'heap?
Già che siamo in C++ perchè non usare vector?
std::vector<int> v(N);
int v[] = new int[N];
// ...
delete v;
delete [] v;
FTFY. :D
DanieleC88
11-06-2010, 10:59
D'oh, hai ragione. :cry:
Quando il sonno è troppo e l'ora è tarda finisco col fare ste prodezze. :stordita:
non dovrebbe essere:
int* v[] = new int[N];
// ...
delete v;
che so io new restituisce un indirizzo...
DanieleC88
11-06-2010, 13:37
No, new crea un nuovo oggetto nell'heap, che poi sia effettivamente un puntatore o no dipende dai casi. Nel caso di un vettore non serve.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.