Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 84 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

limitation de taille pour les tableaux en C++

 
n°19053
gragamel
Profil : Jeune recrue
Posté le 16-11-2007 à 02:09:14  profilanswer
 

Bonjour,
 
Est ce que quelqu'un suarait comment faire pour créer des tableau de grande taille en C++. En fait Dans l'idéal j'aurais besoin que cette déclaration marche:
 
int grid[3500][3500];
 
Merci pour votre aide :)

n°19054
cmoila
Profil : Membre
Posté le 16-11-2007 à 16:31:15  profilanswer
 


int grid[3500][3500];
 
Si tu fais ca a l'interieur d'une fonction tu généres un variable tableau de 49Mo (pour des int 32bits) dans la pile qui classiquement fait quelques ko. Donc explosion immediaite du prog.
 
En C++ pour reserver de la memoire dans le "tas", c'est a dire demander au systeme d'explotation un lot de RAM pour ton prog, il faut utiliser l'operateur "new". Et ensuite rendre (quand on en plus besoin) cette memoire avec "delete". tu déclares dans la pile seulement un pointeur sur cette zone de memoire :
 
int* p_i;  // cree dans la pile un pointeur sur entier
p_i = new int; // reserve dans la memoire systeme la place  d'un int et met son adresse dans le pointeur "p_i"
   ...
delete p_i;   // rend la memoire au systeme
 
 
Bien sur c'est pas tres utile pour un simple entier de quelques octets c'est a utiliser pour les gros objet.  
 
Pour un tableau c'est "new[]" et "delete[]" :
 
int* grid = new int[3500*3500]; // attention c'est un tableau a 1 entrée, grid pointe dessus une zone de 49Mo en RAM
   ...  
delete[] grid;
 
 
 
 
 


Aller à :
Ajouter une réponse