Bonjour à tous,
Je me permets de vous contacter car j'ai une question à vous poser concernant l'allocation et la désallocation en C++
Je dispose d'une classe basique :
et ma fonction main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class Test { private: char * pointeur; public: Test( const char * chaine ) { pointeur = new char[ 10 ]; strcpy( pointeur, chaine ); } ~Test() { delete[] pointeur; pointeur = NULL; } void show() { std::cout << pointeur <<std::endl; } };
L'erreur que j'obtiens dans la console est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int main() { Toto t1("ooo"); Toto t2("aaaa"); Toto t3 = t2; t3.show(); return 1; }
a.out(6947) malloc: *** error for object 0x10de008d0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Mon erreur provient du destructeur quand je fais delete[] pointeur;
Je ne comprends pas pourquoi alors que j'ai bien fais l'allocation à l'aide de new[] utiliser delete[] devrait donc être la solution...
Merci pour votre aide :/
MacInTouch.
Partager