Erreur de stack overflow à cause de tableaux trop volumineux

nicolas_vergnes Messages postés 4 Date d'inscription mercredi 22 juin 2005 Statut Membre Dernière intervention 30 juin 2005 - 24 juin 2005 à 11:23
nicolas_vergnes Messages postés 4 Date d'inscription mercredi 22 juin 2005 Statut Membre Dernière intervention 30 juin 2005 - 27 juin 2005 à 09:27
Salut

Je fais de la décomposition en ondelettes sur des images 320x320. Je dois donc bosser avec des tab de dim [320][320][5].

En les déclarant en statique j'ai un message d'erreur: stack overflow. Si je les déclare en dynamique de la même taille ça passe. En revanche ça pose des problèmes pour passer ces tableaux en paramètre dans des fonctions.

Y a -t il des limites de tailles pour les tableaux (autre que la RAM)?
Comment puis-je contourner ce problème?

Merci à tous pour votre aide!

Nico

3 réponses

darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
24 juin 2005 à 13:17
passe les pointeurs sur tes tableaux en paramètre, comme ca tu n'auras pas de problème.
0
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
24 juin 2005 à 22:43
salut,
Cr qui m'étonne c'est que normalement quand tu déclare un tableau en paramêtre dans une fonction celui correspond en faite à un pointeur vers le tableau, donc la réponse de darfeuille ne convient pas. Par contre à ma connaissance il n'y a pas de limitation de taille de tableau ( si ce n'est la taille de ta mémoire ). Toutefois si tu y arrive en faisant une allocation dynamiquement, pourquoi tu t'embête ?



N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
0
nicolas_vergnes Messages postés 4 Date d'inscription mercredi 22 juin 2005 Statut Membre Dernière intervention 30 juin 2005
27 juin 2005 à 09:27
C'est ça le problème, c'est pas logique. En fait déclarer des tableau 3 dimensions en statique ou en allouant dynamiquement, c'est pareil. Tu es obligé de les définir avec une taille bien défini et puis comme tu fais remarquer judicieusement, passer un tableau dans une fonction = passer un pointeur sur le tableau.

En plus, ça me gave de d'écrire float (*sortie)[DIM_MAX][NIVEAU_MAX] = new float[DIM_MAX][DIM_MAX]NIVEAU_MAX]; au lieu de float sortie[DIM_MAX][DIM_MAX][NIVEAU_MAX]; . Le codage est trop fastidieux dans le 1er cas.

Alors je ne comprend toujours pas pourquoi cette erreur.
0