Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Tableau de grande taille [ Archives / Au secours ] (LuckyNut)

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é 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 tableau constante avec variable [ par sudoku1983 ] Bonjour.Je désire créer un tableau de taille constante mais cette taille dépant d'un calcul. J'ai une constante globale n et la taille du tableau est #define variable......[C/C++][gcc] [ par badboy38 ] Bonjour, J'ai un petit souci. Je définis un tableau en global, donc il faut une constante pour définir sa taille. Mais sa taille est un entier lu dan tableau ou liste chainée [ par leFeu ] j'ai un programme a faire et je dois choisir les structures de données a utiliser.normalement un tableau dynamiqe me suffit car la taille de ma liste 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 declaration variable dans une boucle for [ par calimero20039 ] Bonjour.Je voudrais déclarer une variable a chaque fois que la boucle FOR repart.ex: for(int i=0; i{unsigned short tableau'i' [5];}Un truc dans ce gen Taille du programme en fonction des variable ? [ par Mamelook ] Bonjours, en envoyant mon programme a un de mes amis, j'ai remarqué que ce dernier (le programme) faisait 23,8 Mo, lorsque je le place dans une archiv


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.