Erreur de stack overflow à cause de tableaux trop volumineux
nicolas_vergnes
Messages postés4Date d'inscriptionmercredi 22 juin 2005StatutMembreDernière intervention30 juin 2005
-
24 juin 2005 à 11:23
nicolas_vergnes
Messages postés4Date d'inscriptionmercredi 22 juin 2005StatutMembreDernière intervention30 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?
cs_sim51
Messages postés240Date d'inscriptiondimanche 31 octobre 2004StatutMembreDernière intervention31 décembre 20062 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 !!!
nicolas_vergnes
Messages postés4Date d'inscriptionmercredi 22 juin 2005StatutMembreDernière intervention30 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.