begin process at 2012 02 10 09:11:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Bug avec la fonction new


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bug avec la fonction new

mercredi 14 juin 2006 à 21:21:53 | Bug avec la fonction new

Tobii

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


mercredi 14 juin 2006 à 22:31:21 | Re : Bug avec la fonction new

PoFMaN

Salut,

Je suis pas sur de ce que tu veux allouer comme tableau.
Est ce un tableau de char à deux dimensions (de w char sur h char) ?

Si c'est ça (et donc que tu l'utilise comme ça après) ton allocation devrai ressembler à ça plutot:
char** MAJ= new char*[w];
 for(int l=0; l<w; l++)
        MAJ[l]= new char[h];


Si j'ai mal compris et bien je me demande à quoi ca sert de passer en paramètre 2 int, puisqu'aucun n'est utilisé sans être multiplié par l'autre
     
jeudi 15 juin 2006 à 00:03:22 | Re : Bug avec la fonction new

Tobii

oui effectivement je pourrai passer w*h en argument j'ai laissé les 2 arguments par souci de lisibilité (w et h étant les dimensions d'une image) mais c'est pas le problème. Et c bien un tablo de taille w*h contenant chacun un pointeur vers un tableau de 8 char

 

 

 

vendredi 16 juin 2006 à 21:34:59 | Re : Bug avec la fonction new

PoFMaN

Salut,

bon alors ce soir j'ai enfin accès à visual, et je me suis servi de ta fonction, une fois alloué j'ai rempli toutes les cases du tableau et je les ai affiché. Et j'e n'ai eu aucun probleme que ce soi en debug ou en release, ou en pas à pas (je suis allé jusqu'au 18ème new).

J'ai essayé avec 8, 256 et 512 comme valeurs pour w et h.

T'as quelle version de visual (moi j'ai la 2005 express)?
dimanche 18 juin 2006 à 16:58:19 | Re : Bug avec la fonction new

Tobii

Réponse acceptée !

en fait j'ai fini par trouvé ct un bug dans mon programme  je dépassais une zone allouée dynamiquement avant d'arriver à cette fonction (qui effectivement marche bien).


Comme quoi faire un erreur avec un new ça peut provoquer des bugs vraiment très bizarre (une allocation de grande taille marche mais pas de petite taille)  à un autre endroit dans le programme.



Cette discussion est classée dans : genre, char, maj, allocation, plante


Répondre à ce message

Sujets en rapport avec ce message

HELP je ne comprend pas pourquoi mon programme plante [ par surfeurnet ] j'ai developpper le programme suivant sous dev-cpp et lorsque je l'exécute il plante. Je pense que c'est un problème avec les constantes c ou adr mais mon prog plante :-( [ par lcampeur ] Voilà, j'ai un programme qui consiste a envoyer des fichiers quelconques sur des postes référencés précedemment. Je dois pouvoir envoyé plusieurs fich f print allocation de memoir [ par sodival ] /* Je souhaiterai écrire le contenu texte d'une variable char dans un fichier, comment faire ?J'ai pri ce code, mais il me comble les espaces non ecri desalocation char** foireuse [ par MuPuF ] Bonjour, j'ai un probleme d'allocation/désalloc mémoirevoila la bete :char** File.PMD5;//AloueFile.PMD5=new char*[File.NumHash];    for(unsigned int i pionteur [ par lilington ] Salut j'ai un petit problème avec l'allocation dinamique sur VC++ 6je cherche la correspondance entre "malloc" et "new"voilà la l'allocation que je ve Probleme d'Allocation [ par oliverman ] Je pense avoir un petit probleme d'allocation avec mes fonction:Si je fais :char * fonction ( int SIZE){char *buff;buff =new char[SIZE];//(char = 1oct Aider moi : Probléme d'allocation dynamique [ par Vie2006 ] Bonjour tout le mondeJ'ai un prbleme qui me bloque ca fait un bout de temps. En fait, je veux declarer un tableau de chaine de caractéres et le rempli !!! Pb d'allocation mémoire !!! [ par yoyo269 ] Bonjour à tous !Comme le titre l'indique, j'ai un petit souci avec l'allocation de mémoire.En fait j'ai un char*, auquel j'applique un malloc. Ensuite probleme d'allocation [ par littledrummer ] bonjour à tous.J'ai un petit souci avec une allocation mémoire lorsque j'execute le code suivant:string nomfichier="";cin>>nomfichier;<fon Access Violation avec un new char [ par PSylvie ] Bonjour,mon application pour Smartphone 2003 plante toujours au même endroit (l'appli se ferme). Si je débugge, je constate un "0xC0000005 : Access Vi


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales