PB poilu de Stack 0verFlow (c++)

toufleboss Messages postés 2 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 20 novembre 2003 - 19 nov. 2003 à 21:42
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 20 nov. 2003 à 09:46
Ci joint un algo de détourage d'un bmp de qq lignes :

Le Binze c'est que des que la zone a détourée est trop importante je me tape un Stack overflow (le nb de fonction récursive empilé est trop important).

Cependant j'ai augmenté la taille de la pile à 1Go est à l'execution le programme plante (sur de grosses zones) alors que la mémoire utilisée est de 9-10 Mo.

Comprend pas.

void CPicture::Def4Connexes(unsigned long offset_pixel,const int & largeur,const int & hauteur)
{

BufferDetour[offset_pixel] = 1;
int y = offset_pixel/largeur;
int x = offset_pixel%largeur;
long off = offset_pixel;
//int nb_voisins = 0;
float seuil = 0.8;

for(int i=0;i<4;i++)
{
switch(i){
case 0:
off = offset_pixel + 1;//droit
break;
case 1:
off = offset_pixel + largeur;//bas
break;
case 2:
off = offset_pixel -1;//gauche
break;
case 3:
off = offset_pixel - largeur;//haut
break;
}

if( ((x-1)>=0) && ((x+1)<largeur) && ((y+1)<hauteur) && ((y-1)>=0) ){
if( (BufferDetour[off] == 0) && (SimilariteCouleur(bmpBuffer[off]) > seuil)){
// nb_voisins++;
Def4Connexes(off,largeur,hauteur);
}
}
}//if(nb_voisins !4) TabResul[indiceConn++] offset_pixel; //mise anjour du tableau des contours
}

Zen ?-)

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 nov. 2003 à 23:48
Vire la recurrence et reecris cela en iteratif. Quand bien meme tu pourrais avoir une stack de 1 tera serait bien trop long d'empiler tous ces param a chaque tour et de depiler ensuite.
BruNews, ciao...
0
toufleboss Messages postés 2 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 20 novembre 2003
20 nov. 2003 à 02:26
C'est pas possible en itératif c'est bien trop lent. De plus cet algo doit tourner puisque j'ai vu un algo du même genre tourner.
Zen ?-)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 nov. 2003 à 09:46
itératif plus lent que recursif ? ou as-tu lu une anerie de ce genre ?
BruNews, ciao...
0
Rejoignez-nous