CLASSE SSTRING OU LA MANIPULATION DES "STRING" PLUS INTUITIVE
plus_plus_fab
Messages postés232Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 8 janvier 2005
-
11 déc. 2004 à 12:47
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
31 mai 2005 à 19:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
plus_plus_fab
Messages postés232Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 8 janvier 2005 11 déc. 2004 à 12:47
Salut,
il manque le copy constructeur.
pour prendre la taille d'une chaine de caractere : strlen() de <cstring> (<string.h>), pour copier strcpy.
les operateurs +, +=, =, provoque des fuites memoires abominables ! Il faut faire un delete avant de réallouer !
et les typedef sstring, Sstring, ... c'est pas tres utile amha.
NoRabbit
Messages postés224Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention30 mars 2009 11 déc. 2004 à 13:28
taille de la chaîne = sString.Len();
pour les opérateurs +, +et, des fuites mémoires ? sur quoi faut il faire un delete ? peux tu expliquer comment les fuites de mémoire se produisent ?
tkx !
pour les typedef, c'est juste pour montrer leur utilisation.
NoRabbit
Messages postés224Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention30 mars 2009 11 déc. 2004 à 13:32
ha ok, pour le delete mais peux tu quand même expliquer comment les fuites de mémoire se produisent ?
tkx !
plus_plus_fab
Messages postés232Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 8 janvier 2005 11 déc. 2004 à 14:31
il y a une fuite memoire quand tu ne libere pas les objets que tu alloues.
char* p = new char[50];
p = new char[30];
la, tu as perdu 50 octets, ils ne sont en effet plus référencé et il n'est plus possible de les liberer.
char* p = new char[50];
delete [] p;
p = new char[30];
la, c'est bon.
delete[] dans le destructeur aussi !
while(*b)
{
b++;
len_b++;
}
au lieu de faire ça, tu peux faire len_b = strlen(b);
tes typedef, ils polluent quand meme bien l'espace de nom global !
NoRabbit
Messages postés224Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention30 mars 2009 11 déc. 2004 à 16:13
ok, tkx !
les "delete" ont été ajoutés sauf pour le destructeur, une erreur se produit lorsqu'on concatène 2 chaînes (opérateurs + et +=)
Sans le delete dans le destructeur, aucune erreur ne se produit.
11 déc. 2004 à 12:47
il manque le copy constructeur.
pour prendre la taille d'une chaine de caractere : strlen() de <cstring> (<string.h>), pour copier strcpy.
les operateurs +, +=, =, provoque des fuites memoires abominables ! Il faut faire un delete avant de réallouer !
et les typedef sstring, Sstring, ... c'est pas tres utile amha.
11 déc. 2004 à 13:28
pour les opérateurs +, +et, des fuites mémoires ? sur quoi faut il faire un delete ? peux tu expliquer comment les fuites de mémoire se produisent ?
tkx !
pour les typedef, c'est juste pour montrer leur utilisation.
11 déc. 2004 à 13:32
tkx !
11 déc. 2004 à 14:31
char* p = new char[50];
p = new char[30];
la, tu as perdu 50 octets, ils ne sont en effet plus référencé et il n'est plus possible de les liberer.
char* p = new char[50];
delete [] p;
p = new char[30];
la, c'est bon.
delete[] dans le destructeur aussi !
while(*b)
{
b++;
len_b++;
}
au lieu de faire ça, tu peux faire len_b = strlen(b);
tes typedef, ils polluent quand meme bien l'espace de nom global !
11 déc. 2004 à 16:13
les "delete" ont été ajoutés sauf pour le destructeur, une erreur se produit lorsqu'on concatène 2 chaînes (opérateurs + et +=)
Sans le delete dans le destructeur, aucune erreur ne se produit.