Click here to Skip to main content
15,895,777 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Disable a textbox based on combo box choice Pin
Jochen Arndt8-Jun-17 4:37
professionalJochen Arndt8-Jun-17 4:37 
GeneralRe: Disable a textbox based on combo box choice Pin
lolici8-Jun-17 11:01
lolici8-Jun-17 11:01 
GeneralRe: Disable a textbox based on combo box choice Pin
Jochen Arndt8-Jun-17 21:17
professionalJochen Arndt8-Jun-17 21:17 
QuestionOverload -> operator Pin
_Flaviu6-Jun-17 23:54
_Flaviu6-Jun-17 23:54 
AnswerRe: Overload -> operator Pin
Jochen Arndt7-Jun-17 0:43
professionalJochen Arndt7-Jun-17 0:43 
GeneralRe: Overload -> operator Pin
_Flaviu7-Jun-17 1:56
_Flaviu7-Jun-17 1:56 
AnswerRe: Overload -> operator Pin
Andy Bantly29-Jun-17 6:28
Andy Bantly29-Jun-17 6:28 
QuestionTrying to understand this article on why auto_ptr has been deprecated Pin
swampwiz6-Jun-17 6:45
swampwiz6-Jun-17 6:45 
I was reading this article, and I'm trying to understand a point that the author is trying to make.

Bartek's coding blog: Smart pointers gotchas[^]

class Test
{
public:
Test():m_value(0) { std::cout << "Test::Test" << std::endl; }
~Test() { std::cout << "Test::~Test destructor" << std::endl; }

int m_value;
};

typedef std::auto_ptr<test> TestAutoPtr;
typedef std::unique_ptr<test> TestUniquePtr;
typedef std::shared_ptr<test> TestSharedPtr;

void doSomethig(TestAutoPtr myPtr) {
myPtr->m_value = 11;
}

void AutoPtrTest() {
TestAutoPtr myTest(new Test());
doSomethig(myTest);
myTest->m_value = 10;
}

The author says this will crash. It seems that when myTest is instantiated, there is an auto_ptr object that now exists as a member of myTest, pointing to a heap instantiation of Test. Then when doSomethig() is called the *value* of the pointer is passed (i.e., the address of that heap Test object), and a new auto_ptr object, myPtr, is created, with its value set to the address of that Test object. And then after doSomethig() finishes, myPtr is destroyed, but since it is an auto_ptr, that destruction will delete the object that has the address of its value (i.e., the Test object). So, when a dereference of the myTest object (i.e., an auto_ptr object) is attempted, the Test object is no longer there, and hence an error that is as per trying to dereference an uninitialized (or perhaps null?) pointer.

Is my explanation accurate?
AnswerRe: Trying to understand this article on why auto_ptr has been deprecated Pin
leon de boer6-Jun-17 9:49
leon de boer6-Jun-17 9:49 
QuestionMessage Closed Pin
2-Jun-17 20:55
Member 132002172-Jun-17 20:55 
Questionbuilding the assimp library Pin
PierreBokma25-May-17 10:01
PierreBokma25-May-17 10:01 
AnswerRe: building the assimp library Pin
Richard MacCutchan25-May-17 20:48
mveRichard MacCutchan25-May-17 20:48 
AnswerRe: building the assimp library Pin
RedDk26-May-17 8:19
RedDk26-May-17 8:19 
QuestionC2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redefinition RESOLVED Pin
bkelly1321-May-17 21:12
bkelly1321-May-17 21:12 
AnswerRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Richard MacCutchan21-May-17 22:34
mveRichard MacCutchan21-May-17 22:34 
AnswerRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Jochen Arndt21-May-17 23:38
professionalJochen Arndt21-May-17 23:38 
AnswerRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Randor 22-May-17 0:29
professional Randor 22-May-17 0:29 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
bkelly1322-May-17 3:44
bkelly1322-May-17 3:44 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Randor 22-May-17 5:15
professional Randor 22-May-17 5:15 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
bkelly1322-May-17 10:28
bkelly1322-May-17 10:28 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Randor 22-May-17 11:18
professional Randor 22-May-17 11:18 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
bkelly1322-May-17 11:53
bkelly1322-May-17 11:53 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
leon de boer22-May-17 19:49
leon de boer22-May-17 19:49 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
Richard Andrew x6428-May-17 15:11
professionalRichard Andrew x6428-May-17 15:11 
GeneralRe: C2011 ‘vc_sttributes::YesNoMaybe’ “ ‘enum’ type redifinition Pin
leon de boer28-May-17 16:37
leon de boer28-May-17 16:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.