begin process at 2012 02 12 14:48:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Tableau de grande taille


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau de grande taille

mardi 7 septembre 2004 à 17:36:51 | Tableau de grande taille

LuckyNut

Slut,

J'ai un problème pour créer un tableau de grande taille à 2 dimensions :

int tab[100][62000];

Le programme plante sur un "stack overflow"
Cette variable est une variable de classe.

Qui peut m'aider ?

Merci
mardi 7 septembre 2004 à 17:45:58 | Re : Tableau de grande taille

djl

tu delcare ca sur la pile, fais une alloc ou met en static
mercredi 8 septembre 2004 à 16:11:12 | Re : Tableau de grande taille

magic_Nono

Membre Club
passe en dynamique

Magic Nono: l'informagicien!
mercredi 8 septembre 2004 à 16:37:32 | Re : Tableau de grande taille

LuckyNut

Merci pour les réponses

djl : ca marche en static mais je suis obligé de la mettre en variable globale, si je la laisse en variable de classe j'ai une erreur à l'édition des liens

Magicien : je sais pas comment déclarer et utiliser des tableaux dynamiques à plusieurs dimensions (shame on me) peut etre peux-tu me patcher ?
mercredi 8 septembre 2004 à 16:47:19 | Re : Tableau de grande taille

magic_Nono

Membre Club

pas de pb :

regarde simplement l'utilisation de ces macros dans mes sources...


(je te fais ici une compile car je ne sais pas si tu es en C ou C++)



#ifndef MACROS_DE_GESTION_MEMOIRE_HPP
#define MACROS_DE_GESTION_MEMOIRE_HPP
///pour les allocations
// allocation dynamiques - faire FREE apres utilisation
// exemples :ALLOUE(t,TableEntiere_); - // ALLOUEn(text,char,25);
// nota, vu que svt y a des erreurs, rajouter la taille d'un car de terminaison!!!
#include <malloc.h>
//pour enlever des bugs de Visual...
#define FREE(ptr) do{free(ptr);ptr=NULL;}while(0)
#define BDELETE(ptr) do{if((ptr)!=NULL){delete(ptr);(ptr)=NULL;}}while(0)
//#define MALLOC(type) ((type *)malloc((size_t)(sizeof(type))))
//#define MALLOCn(type,nb) ((type *)malloc((size_t)((nb)*sizeof(type))))
//TAILLE_B(void* ptr);
/////inline TAILLE_B(void* ptr) {if (ptr != NULL) return _msize(ptr); else return 0;}
// WARNING, EXCEPTION a recuperer
#define ALLOUE(ptr,type) do{\
if ((ptr = ((type *)malloc((size_t)(sizeof(type)))) )== NULL) \
PB2("\n\nPAS ASSEZ DE MEMOIRE - Erreur allocation dynamique\n \t _ALLOUE(ptr,type)\n\n",-50);}while(0)
#define ALLOUEn(ptr,type,nb) do{\
if ((ptr = ((type *)malloc((size_t)((nb)*sizeof(type)))) )== NULL) \
PB2("PAS ASSEZ DE MEMOIRE - Erreur allocation dynamique\n \t _ALLOUEn(ptr,type,nb)",-50);}while(0)
//idem avec new
#define ALLOUE2n(ptr,type,nb) do{\
if ((ptr = new type[nb])== NULL ) \
PB2("PAS ASSEZ DE MEMOIRE - Erreur allocation dynamique\n \t _ALLOUEn(ptr,type,nb)",-50);}while(0)
//////RALLONGEx sont en Test
#define RALLONGE(ptr,type) do{int taille; \
if (ptr != NULL) taille=_msize(ptr); else taille=0;\
if (( ptr = ( (type *)realloc(ptr,(size_t)(taille+ sizeof(type))) ) )== NULL) \
PB2("\n\nPAS ASSEZ DE MEMOIRE - Erreur de reallocation dynamique (_RALLONGE)\n\n",-50);}while(0)
#define RALLONGEn(ptr,type,nb) do{int taille; \
if (ptr != NULL) taille=_msize(ptr); else taille=0;\
if (( ptr = ( (type *)realloc(ptr,(size_t)(taille+(nb)*sizeof(type))) ) )== NULL) \
PB2("\n\nPAS ASSEZ DE MEMOIRE - Erreur de reallocation dynamique (_RALLONGEn)\n\n",-50);}while(0)
//ATTENTION, le type rallongé doit etre du mm type que rallonge
// WARNING, EXCEPTION a recuperer
#define AJUSTE(ptr,type,nb) do{if (( ptr = ( (type *)realloc(ptr,(size_t)((nb)*sizeof(type))) ) )== NULL)\
PB2("\n\nPAS ASSEZ DE MEMOIRE - Erreur de reallocation dynamique (reajuste)\n\n",-50);}while(0)




vu que PB2 est utilisé, je t'en donne les significations
: au choix, tu prend le mode le plus approprié !


#ifdef B_EXCEPTIONS
#ifdef _DEBUG
// Les exceptions sont définies avec trace.")
#define PB1(txt) do{BString plomp="Exception levee : "; plomp+=txt;saveToErrorLog(plomp);throw (BException(txt));}while(0)
#define PB2(txt,numException) do{BString plomp="Exception levee : num "; plomp+=numException;plomp+=" : ";plomp+=txt;saveToErrorLog(plomp);throw (BException(txt,numException));}while(0)

#else /* _DEBUG */

// Les exceptions sont définies sans trace.")
#define PB1(txt) {throw (BException(txt));}
#define PB2(txt,numException) {throw (BException(txt,numException));}
#endif /* _DEBUG */


#else /* B_EXCEPTIONS */



#ifdef _DEBUG
// Les erreurs sont définies avec trace.(sortie : trace & mode console)")
#define PB1(txt) {saveToErrorLog("Interruption");saveToErrorLog(txt);exit(-1);}
#define PB2(txt,numException) {saveToErrorLog("Interruption");saveToErrorLog(txt);puts(txt);exit(numException);}

#else /* _DEBUG */

// Les erreurs sont définies sans trace.(sortie en mode console uniquement)")
#define PB1(txt) {exit(-1);}
#define PB2(txt,numException) {puts(txt);exit(numException);}
#endif /* _DEBUG */

#endif /* B_EXCEPTIONS */











là G po trop de tps, dc, je pense que tu devrais t'en sortir
sinon, demande...

Magic Nono: l'informagicien!
mercredi 8 septembre 2004 à 16:49:06 | Re : Tableau de grande taille

magic_Nono

Membre Club
pr ton pb


une allocation de 100 int *
puis une bcle (100 occurences)
pr allouer les elts de chaque lignes : les 62000 int

++

Magic Nono: l'informagicien!
mercredi 8 septembre 2004 à 16:58:10 | Re : Tableau de grande taille

djl

Réponse acceptée !
LuckyNut >

un attribut static de classe doit etre definis

class Foo
{
static int n[100][62000];
};

int Foo::n [100][62000];

mercredi 8 septembre 2004 à 17:01:27 | Re : Tableau de grande taille

magic_Nono

Membre Club
djl>
2 declarations? curieux


Magic Nono: l'informagicien!
mercredi 8 septembre 2004 à 17:03:03 | Re : Tableau de grande taille

djl

non, une declaration et une definition
mercredi 8 septembre 2004 à 17:05:14 | Re : Tableau de grande taille

djl

magic_Nono > plutot que d'allouer un tableau de pointeurs, on peut aussi allouer un "vrai" tableau 2d

int (*p)[62000];

p = new int[100][62000];

...
delete [] p;

1 2 3

Cette discussion est classée dans : taille, variable, tableau, grande


Répondre à ce message

Sujets en rapport avec ce message

tableaux dynamique (à taille variable) : petite précision [ par Amanobuo ] Salut ! J aimerai une petite précision sur les tableau dynamique, créé avec un new et un pointeur. Quant j'allou la memoire avec le pointeur : tableau declarer un tableau de taille variable [ par Seb33300 ] Bonjourcomment déaclarer un tableau avec un taille déclaré dans une variable ?taille = 10;tableau[taille]; ne marche pasmerci tableau a taille variable en C [ par fandestargate ] Voila, je cherhcer a programmer un tableau dont la taille serait définit par une variable qu'on pourrait choisir au debut du programme:taille=0;scanf Agrandir la taille d'un tableau ? [ par ndubien ] Bonjour, Je cherche à agrandir un tableau ainsi:int variable = malloc( sizeof(int)*taille );Pour qu'elle devienne: int variable = malloc( sizeof(int)* Taille de tableau de string de taille variable [ par laurent134 ] Bonjour, J'ai un petit soucis de débutant : comment determiner la taille (nombre d'élément) d'un tableau de string, sachant que les string n'ont pas tableau de taille variable en c++ [ par petitlapino ] Bonjour à tous, J'ai un petit soucis de débutant : comment déclarer un tableau de taille variable car j'ai récupérer des entiers à partir d'un fichier Taille maxi tableau [ par galax98 ] Bonjour, J'ai besoin pour une application d'utiliser 2 tableaux de 170x170 entiers chacun, ce qui represente en gros 60.000 entiers donc j'imagine une tableau dynamique de structure plusieurs structure différente en C ? [ par Nico_35136 ] Bonjour a tous, Voila je débute dans l'allocation dynamique en C voici mon problème. Je possédé 5 structure de taille différentes qui vont contenir creation de plusieur tableau [ par foxwar ] Bonjour, j'aimerai cree un programme ki permet de cree plusieur tableau du different taille et les afficher g ecirt ce programme mai je c pa ce k'il Tableau à 3 dimensions = erreur size of variable is too large - comment éviter ? [ par wincpp ] Salut à tous.Voilà j'ai un problème quand je veux allouer un tableau à 3 dimensions du genreint tableau[1024][768][1000];Mon compilateur DevC++ me dit


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales