BaFM
Messages postés64Date d'inscriptionmercredi 24 juillet 2002StatutMembreDernière intervention26 novembre 2009 27 déc. 2002 à 12:07
tu devrai soit utiliser que malloc/free (C), soit que new/delete (C++)
Version avec malloc/free :
//...
seq = (char*)malloc(1024); //...
//...
seqcpl = (char*)malloc(strlen(seq)+1); //allocation dynamique du second pointeur //utilisation de strlen pour connaitre la taille exacte de la chaîne !
//...
free(seq);
free(seqcpl);
//...
Version avec new/delete :
//...
seq = new char [1024]; //...
//...
seqcpl = new char [strlen(seq)+1]; //allocation dynamique du second pointeur //utilisation de strlen pour connaitre la taille exacte de la chaîne !
//...
delete [] seq; il faut les [] lorsque l'on a allouer un tableau et non un unique élément !
delete [] seqcpl;
//...
NB : Il faudrait faire : seqcpl[0]=0 : à cause de l'utilisation de strcat, de plus ca rend le code un peu plus lisible et compréhensible
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 24 déc. 2002 à 12:04
oki
jcecchi
Messages postés117Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention14 janvier 20033 23 déc. 2002 à 16:33
Salut,
Pour les includes, utilise plutot ceux du c++ :
#include
#include <cstring>
#include <cstdlib>
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 23 déc. 2002 à 10:53
Pourquoi mélanger les allocations mémoires C et C++ ?
1- Quand il n'y a plus de mémoire disponible, malloc() retourne NULL.
2- On libére de la mémoire allouée par malloc() avec free().
3- Les deux sizeof() que tu utilises sont mals utilisés car ils retournent toujours la taille du pointeur (ici 4 octets). De tout façon, sizeof() ne peut pas être utilisé pour déterminer la taille d'un tableau dynamique.
27 déc. 2002 à 12:07
Version avec malloc/free :
//...
seq = (char*)malloc(1024); //...
//...
seqcpl = (char*)malloc(strlen(seq)+1); //allocation dynamique du second pointeur //utilisation de strlen pour connaitre la taille exacte de la chaîne !
//...
free(seq);
free(seqcpl);
//...
Version avec new/delete :
//...
seq = new char [1024]; //...
//...
seqcpl = new char [strlen(seq)+1]; //allocation dynamique du second pointeur //utilisation de strlen pour connaitre la taille exacte de la chaîne !
//...
delete [] seq; il faut les [] lorsque l'on a allouer un tableau et non un unique élément !
delete [] seqcpl;
//...
NB : Il faudrait faire : seqcpl[0]=0 : à cause de l'utilisation de strcat, de plus ca rend le code un peu plus lisible et compréhensible
24 déc. 2002 à 12:04
23 déc. 2002 à 16:33
Pour les includes, utilise plutot ceux du c++ :
#include
#include <cstring>
#include <cstdlib>
23 déc. 2002 à 10:53
1- Quand il n'y a plus de mémoire disponible, malloc() retourne NULL.
2- On libére de la mémoire allouée par malloc() avec free().
3- Les deux sizeof() que tu utilises sont mals utilisés car ils retournent toujours la taille du pointeur (ici 4 octets). De tout façon, sizeof() ne peut pas être utilisé pour déterminer la taille d'un tableau dynamique.