gpt4 book ai didi

c++ - boost::make_shared 和 C++Builder VCL 对象

转载 作者:行者123 更新时间:2023-11-28 07:36:43 26 4
gpt4 key购买 nike

我尝试使用 new 切换一些 C++Builder 2010 代码使用 boost::make_shared<> ,如下所示。

旧的:

boost::shared_ptr<TStringList> l(new TStringList());

新:

boost::shared_ptr<TStringList> l(boost::make_shared<TStringList>());

l->Add("foo"); //dies here

旧代码有效,但当我尝试使用指针(AV,或者只是挂起)时,新代码就死掉了。我用过 make_sharedshared_ptr之前成功,但从未使用过TObject后人。这是一个已知问题吗 - 也许与方式有关 make_shared使用位置 new() ??

最佳答案

我想 placement new 确实有问题,因为 TObjectnew 满足的内存分配有期望(因为 C++Builder 的 RTL 内部将 C/C++ 内存例程路由到 VCL 项目中的 Delphi RTL 例程),但 placement new 不会。

关于c++ - boost::make_shared 和 C++Builder VCL 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com