Probleme avec malloc

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 1 mars 2007 à 21:13
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 2 mars 2007 à 21:37
Bonjour, je code un logiciel sous Dev-Cpp en C et depuis hier mon application se bloque a un moment donne. Je n arrivai pas a trouver le bug. (La compilation fonctionne, aucune erreur ni warning). Du coup j'ai installe Visual Studio 2005 et lorsque mon programme se lance et au moment ou il se bloque cette fenetre aparait:   (desole pour le lien, mais j'ai pas reussi a introduire l image ici)
http://lektrosonic.free.fr/logo/Untitled-1.jpg
Grace a cette fenetre, j'ai pu ''localiser'' le bug. J'ai alors realise que cette fenetre apparait lors de l'apel de la fonction malloc. Par exemple :

char* temp_str;
temp_str=malloc(sizeof(char)*40);   <<<< a ce moment
if(temp_str==NULL)
{
     ....
}

Et pour rendre encore plus bizzare le probleme:
malloc est deja appelee avant dans le programme, mais pourtant elle cause l'erreur uniquement a cet endroit!

Que doi-je faire? Ne pas utiliser malloc pour allouer de la memoire ?

Voila ceci est mon probleme, je vous remercie d avance pour la lecture et l'etude de mon probleme.

l3KTr0 Was HeRe

8 réponses

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
1 mars 2007 à 21:28
Il nous faudrait le reste du code : qu'est-ce-qui est dans le '...'
Sinon ca me parait bizarre que tu dises que tu trouves pas le bug
alors qu'il n'y a aucun warning et error.
Par definition un bug est une erreur de logique dans la programmation
et non une erreur d'ecriture (en fait si parfois mais rarement,
genre inversion de symboles ou autres)...
Dans le '...' tu fais un "exit(1);" ou pas ?

Pourquoi faire simple quand on peut faire compliqué ?
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
1 mars 2007 à 21:43
salut,

de plus, je pense que l'erreur dit quelquel chose...peux-tu nous dire quoi ?

ShareVB
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
1 mars 2007 à 22:13
1)Quand je dit ''erreur'' je veu dire la fenetre qui apparait.
2)Oui effectivement aucune erreur apparait lors de la compilation
3)Dans le ... il y a tout simplement:
MessageBox(hwnd,"Error on allocating memory","Error",MB_ICONERROR|MB_OK);
                              exit(0);
l3KTr0 Was HeRe
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
2 mars 2007 à 09:34
salut,

je comprends pas bien comment tu fais pour débugger, si tu obtiens cette fenêtre, c'est que tu lances l'exe en dehors de visual studio...ca serait vraiment beaucoup plus simple de créer un projet dans VC++, d'ajouter tes fichiers dedans et de faire F5 (en mode Debug)...

cela dit lorsque tu cliques sur Yes dans la fenêtre, normalement, ca doit te donner un code en hexa...à savoir le code d'erreur...

ShareVB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
2 mars 2007 à 12:59
Salut,


C'est plus propre en castant le retour du malloc je pense... Sans compter que le problème vient peut etre de là.


char* temp_str;

temp_str=(char*)malloc(sizeof(char)*40);   <<<< a ce moment


Tu peux peut etre aussi essayer les fonctions d'alllocation de Windows.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mars 2007 à 13:16
En C pas besoin de cast, c'est moins verbeux, le compilo sait qu'une adresse est un nombre 32 bits, aucune philo à la noix.
Ceci dit, le cast explicite est utile pour relire son code.

ciao...
BruNews, MVP VC++
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
2 mars 2007 à 17:50
Est-ce-que quelqu'un ici connait la méthode du pas-à-pas (je suis sur que ca existe !)
C'est parfois utile, pour l'avoir déjà utilisé par moi même ... c'est biensur de l'ironie :
le pas-à-pas est le SEUL moyen pour debbuger ton programme !!!
Je trouve ca scandaleux (si c'est le cas) que des personnes posent des messages
quand ils n'ont pas fais en amout le nécessaire pour savoir où est l'erreur.

Donc ta "localisation" normalement doit s'etre faite par le pas-à-pas et non pas par
la fenêtre du compilo. !

Remarque : il est vrai qu'un cast n'a jamais fait de mal à une mouche

Pourquoi faire simple quand on peut faire compliqué ?
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
2 mars 2007 à 21:37
Surtout avec le débuggeur de visual ... faudrait etre stupide pour s'en priver :)
0
Rejoignez-nous