Probleme de mémoire, impossible à vider...

Résolu
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006 - 21 juin 2005 à 09:41
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 21 juin 2005 à 19:36
Bonjour,



Voilà mon problème
:



J'ai le code suivant :




char *buffer;




sprintf(buffer,"DELETE
FROM patient WHERE num_typepaid 7 AND impai 0 AND heure_entrer
<=
%0.2d%0.2d00 AND

heure_entrer > %0.2d%0.2d00",heure, minute,
heure_moin, minute_moin);




mysql_query(conn,buffer);




Le problème étant
que le code fonctionne bien mais que quelque fois, c'est à
dire que si je fait une boucle sur se code au bout d'un moment la
mémoire sature... j'ai ce message d'erreur :
"L'instruction à
"0x00406b87" emploie l'adresse mémoire "0x317590c8".
La mémoire ne peut pas être "written"..."



Et si je met free(buffer);
alors la requête ne s'effectue pas une seule foie et j'ai ce
message d'erreur :



"DAMAGE: after Normal
block (#63) at 0x004300E0"



J'ai cherché pendant
toute une aprèm et rien...




Merci d'avance pour la
réponce

17 réponses

Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 18:36
J'ai trouver se qui clochais...

il falais que je mette un nombre bcp plus grand... j'ai donc mis 1000*sizeof(char) et à la fin j'ai mis un free(buffer);

Merci de votre à tous...
3
BunoCS Messages postés 15487 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 18 septembre 2024 103
21 juin 2005 à 10:04
Ton tableau n'est pas alloué...



char * buffer;

buffer = (char *)malloc(TAILLE_MAX*sizeof(char));

....

free(buffer);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 12:20
Excuse moi, j'ai oublié de l'ecrire dans mon message, mais j'ai bien aloué mon tableau...

buffer = malloc(sizeof (char*)*10);

et j'ai toujours la meme erreur....
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2005 à 12:37
40 octets pour y mettre toute ta requête, c'est une plaisanterie, non ???

ciao...
BruNews, MVP VC++
0

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

Posez votre question
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 13:22
Et bien, la requête fonctionne... après c'est vrai que sa parai bizard... de toute manière que je mette
buffer = malloc(sizeof (char*)*10);
ou
buffer = malloc(sizeof (char*)*50);
ou
buffer = malloc(sizeof (char*)*100);
J'ai toujours le même message d'erreur... :-(
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2005 à 13:29
sizeof(char))
SANS le '*' de pointeur !!!

ciao...
BruNews, MVP VC++
0
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 13:35
Excuse moi, je n'est pas compris, où mettre le '*'?
0
BunoCS Messages postés 15487 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 18 septembre 2024 103
21 juin 2005 à 13:48
buffer = (char *)malloc(TAILLE*sizeof(char));



Tu veux que ton tableau fasse TAILLE fois la taille d'un CHAR

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 juin 2005 à 13:48
C'est marquer de ne pas en mettre,
char* désigne une adresse et char un caractère
C'est pas trop pareil


void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 juin 2005 à 13:49
Désolé pas une adresse mais quelque chose qui pointe vers une adresse :)


void Aurevoir( void ); //Bonne journée
0
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 13:54
ok, dsl d'avoir mal compris... ceci étant même en metant



buffer = (char *)malloc(100*sizeof(char));



le probleme perciste... :(:(
0
BunoCS Messages postés 15487 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 18 septembre 2024 103
21 juin 2005 à 16:43
Es-tu bien sûr de n'écrire dans Buffer qu'un nombre de caractères inférieur à 100?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 juin 2005 à 18:40
Purée t'en alloue beaucoup quand même lol


void Aurevoir( void ); //Bonne journée
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2005 à 18:52
/auteurdetail.aspx?ID=39449 ben t'aurais mis
char buffer[100]
sprintf(bla bla..);
appel requete

et y avait pas besoin d'alloc ni desalloc, pour 100 octets ça va impec sur la pile le temps de l'appel et tu gagnes les appels au memory manager qui sont très couteux.

ciao...
BruNews, MVP VC++
0
Guizmo95 Messages postés 28 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 2 novembre 2006
21 juin 2005 à 18:58
Merci pour l'info, je vais me penser deçu ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 juin 2005 à 19:16
Pourquoi ta 2 chats pareils ???


void Aurevoir( void ); //Bonne journée
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2005 à 19:36
encore le souk de cette zone rich( !!!)texte à la noix.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous