begin process at 2012 05 30 01:42:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

problème d'allocation mémoire dans ma classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème d'allocation mémoire dans ma classe

dimanche 25 mai 2003 à 15:46:03 | problème d'allocation mémoire dans ma classe

Bub325

Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourquoi donc si qqn peut m'aider ce serais un grand plaisir (je me lance en c++ et je fait ça pour aprendre).

#include <stdiostr.h>
#include <string.h>

class string
{
char* a;

public:
string(char* chaine = NULL)
{
if (chaine)
{
a = new char [strlen(chaine)+1];
strcpy(a,chaine);
}
else a = NULL;
}
~string()
{
delete [] a;
}
char* operator() ()
{
return a;
}
string &operator= (const string &p)
{
delete [] a;
if (p.a != NULL)
{
a = new char [strlen(p.a)+1];
strcpy(a,p.a);
}
else a = p.a;

return (*this);
}
string operator+ (const string &p)
{
string tmp;
int size = strlen(a) + strlen(p.a) + 1;
tmp.a = new char [size];
sprintf(tmp.a,"%s%s",a,p.a);
return tmp;
}
};

int main()
{
string a("kikoo"),b,c("bubu");
b = a + c;
cout << b() << '\n';
return 0;
}

Bub325
Le codeur pas comme tout le monde
lundi 26 mai 2003 à 01:39:37 | Re : problème d'allocation mémoire dans ma classe

Kaid


- Pour l'opérateur +, c'est l'objet courant qui doit être modifié, tu ne dois pas retourner un nouvel objet comme tu le fais.

- Toujours dans cette méthode, tu retournes un objet 'string' alors que tu n'as pas de constructeur de copie.

- Dans ton destructeur tu ne testes pas si le pointeur 'a' pointe sur une chaine ou sur NULL.

- Idem dans l'opérateur d'affectation: tu détruis 'a' alors qu'il pointe peut-être sur NULL.

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourquoi donc si qqn peut m'aider ce serais un grand plaisir (je me lance en c++ et je fait ça pour aprendre).
>
> #include <stdiostr.h>
> #include <string.h>
>
> class string
> {
> char* a;
>
> public:
> string(char* chaine = NULL)
> {
> if (chaine)
> {
> a = new char [strlen(chaine)+1];
> strcpy(a,chaine);
> }
> else a = NULL;
> }
> ~string()
> {
> delete [] a;
> }
> char* operator() ()
> {
> return a;
> }
> string &operator= (const string &p)
> {
> delete [] a;
> if (p.a != NULL)
> {
> a = new char [strlen(p.a)+1];
> strcpy(a,p.a);
> }
> else a = p.a;
>
> return (*this);
> }
> string operator+ (const string &p)
> {
> string tmp;
> int size = strlen(a) + strlen(p.a) + 1;
> tmp.a = new char [size];
> sprintf(tmp.a,"%s%s",a,p.a);
> return tmp;
> }
> };
>
> int main()
> {
> string a("kikoo"),b,c("bubu");
> b = a + c;
> cout << b() << '\n';
> return 0;
> }
>
> Bub325
> Le codeur pas comme tout le monde
>


Cette discussion est classée dans : string, chaine, char, tmp, operator


Répondre à ce message

Sujets en rapport avec ce message

Convertion d'une string en char [ par redpooka ] Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?Merci#include <iostre string [ par ToToL ] BonjourComme le dit le sujet j'ai un probleme de string ...... ;-)en fait j'ai un char remplit d'une chaine de caractere avec a un endroit de la chain Allocation dynamique de char* .... [ par Gendal67 ] Bonjour à tous....Avant d'acheter un flingue pour de bon, je me suis dit qu'il pourrait etre judicieux de demander de l'aide quelque part... voila, je Convertir string en char* [ par turnerom ] Bonjour,je n'arrive pas à convertir une string en char*, je sais que ca parait tout bete, mais je bloque, si quelqu'un pouvait m'aider, ce serai super Operateur + (string) [ par victorcoasne ] Bonjour, Je voulais faire un code du genre : [code=cpp]#include #include using namespace std; int main() { string test = "a" + "b"; cout string to bstr [ par wislam2007 ] Salut je veux marshaler un bstr pr un prg ecrit en NCl. j'ai besoin de convertir ma chaine en BSTR. j'ai tenté par : [code=cpp]unsigned long length = Recréer la fonction strstr [ par qubs ] Salut, J'aimerais recoder la fonction strstr mais je n'arrive pas a aboutir et a comprendre le fonctionnement, j'aimerais bien un coup de main svp. = petit problème avec strcat [ par macbang ] Bonjour,Je rencontre un petit problème avec la fonction strcat.j'ai déclaré plusieurs chaine de caractère.la première récupère un int converti en cara Convertir unsigned char en string^ [ par elise42 ] Bonjour à tous, je code en C++ et je cherche à convertir un unsigned char Buffer_Envoi en un string ^Trame. Quelqu'un aurait il une idée? Merci d'a Problème de pointeur : erreur non-lvalue in assignment [ par AmStErDaMnEd ] Bonjour,    j'ai récupéré un bon de code pour pouvoir splitter une chaine. Cela fonctionne sans pointeur. Cependant, j'ai besoin de récupérer un char*


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales