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 :

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;
	    }
};
et ma fonction main :

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;
}
L'erreur que j'obtiens dans la console est la suivante :

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.