Fuite memoire + Debug

cs_Manson Messages postés 137 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 30 septembre 2004 - 13 oct. 2003 à 10:29
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 oct. 2003 à 11:22
Bonjour a tous.

Voila j'ai un gros probleme, voila un bout de code qui me met la tete a l'envers, et j'aimerai que l'on m'explique ce qui se passe :

#pragma once

#define WIN32_LEAN_AND_MEAN
#include <malloc.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <crtdbg.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
char	*test;

test = (char *)malloc(1024 * sizeof(char *));
_CrtDumpMemoryLeaks();
memset(test, 0, 1024);
_CrtDumpMemoryLeaks();

free(test);
return 0;
}



des que je compil ce prog y'a pas de pb, des que je le lance,
_crt me trouve une fuite et me fait un dump de la memoire, juste apres le malloc et juste apres le memset. Le pire c que j'ai fait le test sur une structure et c pareil. C koi le pb ??? Vous avez de meilleurs fonction pour debugger un prog ??? Pour tester les malloc, les free, ... ?

D'avance merci.

Arno

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
13 oct. 2003 à 10:40
La seule chose a tester sur un malloc est de savoir si le retour est NON NULL auquel cas va bon et tu free().
Si NULL alors STOP.
Le meilleur debug est un codage rigoureux.
BruNews, ciao...
0
cs_Manson Messages postés 137 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 30 septembre 2004
13 oct. 2003 à 11:04
je suis tout a fait d'accord, mais des fois tu fais pas gaff et puis tu continu a coder, et tu te choppe un segfault et tu sais pas d'ou il vient, donc tu debug. Le pb, c ke meme les allocations basique ont l'air de foire (ce qui est pas normal, nan ?). J'ai remplace les malloc par des GlobalAlloc et les free par des GlobalFree ca a l'air de mieux passe. Mais bon je peux pas changer ce que strdup, ... utilise. A moins de malloc moi meme et de faire un strcpy, qu'en pense-tu ?

Arno
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2003 à 11:22
GlobalAlloc est obsolete, a n'utiliser que pour clipboard.
Utiliser HeapAlloc ou VirtualAlloc selon taille et/ou besoin.
BruNews, ciao...
0
Rejoignez-nous