0
我試過使用new
來切換一些C++ Builder 2010代碼來使用boost::make_shared<>
,如下所示。boost :: make_shared和C++ Builder VCL對象
老:
boost::shared_ptr<TStringList> l(new TStringList());
新:
boost::shared_ptr<TStringList> l(boost::make_shared<TStringList>());
l->Add("foo"); //dies here
舊的代碼工作,但新的代碼去世時,我嘗試使用指針(AV,或只是掛起)。 我以前成功使用過make_shared
和shared_ptr
,但從未與TObject
後代一起使用過。這是一個已知的問題 - 可能與make_shared
使用放置new()
的方式有關嗎?
奇怪的事情回來咬你。三年之後,我絆倒了完全相同的問題,Google和StackOverflow讓我回到了一個我忘記的問題,我甚至問過;) – Roddy