Voila ce que j'ai tapé et compilé sous visual studio :
char** AllouerMaj(int w, int h)
{
char** MAJ= new char*[w*h];
for(int l=0; l<w*h; l++)
MAJ[l]= new char[8];
return MAJ;
}
j'appelle cette fonction dans le main avec un truc du genre :
char** MAJ = AllouerMaj(w,h);
quand je compile aucun probleme qd je lance le programme il plante mais pas à cet endroit (plus loin dans le programme quand je veux remplir les cases du tableau MAJ)
Mais qd j'utilise le débugeur en mode step par step, il plante au niveau du 2e new : la première allocation se passe sans problemes mais la deuxieme n'a pas lieu (ce qui explique que le programme plante plus loin). Ce qui est bizarre c que si je remplace 8 par un grand nombre (genre 256*256) l'allocatoin se passe sans probleme, Inversement si je remplace le w*h (qui valent 256 et 256 dans mes tests) dans la premiere allocation (char** MAJ= new char*[w*h];
) par un 8 la ça plante à ce niveau. Enfin si jécris ces instructions directement dans le main ça marche. Alors cke jpige pas c pourquoi une allocation qui prend bcp de place marche impec alors qu'une petite allocation ne marche pas. Je me demande donc si c pas un bug connu du compilateur visual studio (ou visual c++) ou si c vraiment du à qq chose que j'ai fait de mal à coté dans mon code source (j'ai particuliérement bien fait attention aux autre new et delete du code). Quel genre d'erreur pour provoquer ce genre de "réaction" du débuggeur ?
merci pour votre aide