Bonjour à tous,

Je suis en train de me former à l'utilisation des smart pointers de la STL et je faisais des tests sur unique_ptr. Je développe sous Orwell Dev-C++, un fork de Dev-C++ qui supporte C++11.

J'ai une classe basique qui affiche des phrases dans la console pour contrôler ce qui se passe au niveau des constructions, destructions...

Voilà le .h
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
 
#ifndef _TEST_
#define _TEST
 
class Test
{
	public:
		Test();
		Test(int i);
 
		void aboie();
 
		~Test();
};
 
#endif
et le .cpp

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
#include "Test.h"
#include<iostream>
 
Test::Test()
{
	std::cout << this << ": Construction basique." << std::endl;
};
 
Test::Test(int i)
{
	std::cout << this << ": Construction parametree:" << i << std::endl;
};
 
void Test::aboie()
{
	std::cout << this << ": Waf waf !" << std::endl;
}
 
Test::~Test()
{
	std::cout << this << ": Destruction" << std::endl;
}
Rien d'intelligent là dedans, je découvre...

Maintenant, j'ai voulu faire planter le programme pour voir ce qui se passait quand on appelait une méthode de l'objet géré après un release.

Voilà mon main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#include "Test.h"
#include <memory>
 
int main()
{
	std::unique_ptr<Test> t(new Test), t2;
	t->aboie();
	t.release();
	t->aboie();
	return 0;
}
et voilà le résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
0x8b1818: Construction basique.
0x8b1818: Waf waf !
0: Waf waf !
 
--------------------------------
Process exited with return value 0
Press any key to continue . . .
J'ai donc le pointeur NULL qui aboie joyeusement... J'ai très peur de cette voix d'outre tombe !!

Donc, est-ce un comportement normal ou alors une mauvaise implémentation de la part du compilateur d'Orwell Dev-C++.
Ou pour parler autrement, dois-je me séparer directement de cet IDE que j'apprécie fortement ?