草庐IT

malloc_ptr_t

全部标签

c++ - 利用 `std::weak_ptr` 实现自杀对象

我正在考虑使用“自杀对象”来模拟游戏中的实体,即能够自行删除的对象。现在,通常的C++03实现(普通的旧deletethis)对可能引用自杀对象的其他对象没有任何作用,这就是我使用std::shared_ptr的原因和std::weak_ptr.现在是代码转储:#include#include#includestructSuObj{SuObj(){std::coutcreate(){std::shared_ptrobj=std::make_shared();return(obj->ptr=std::move(obj));}private:std::shared_ptrptr;};int

c++ - 利用 `std::weak_ptr` 实现自杀对象

我正在考虑使用“自杀对象”来模拟游戏中的实体,即能够自行删除的对象。现在,通常的C++03实现(普通的旧deletethis)对可能引用自杀对象的其他对象没有任何作用,这就是我使用std::shared_ptr的原因和std::weak_ptr.现在是代码转储:#include#include#includestructSuObj{SuObj(){std::coutcreate(){std::shared_ptrobj=std::make_shared();return(obj->ptr=std::move(obj));}private:std::shared_ptrptr;};int

c++ - 编译器会优化 malloc/free 或 new/delete 对到 alloca

有没有成熟的C/C++编译器,能够优化malloc/free(或者new/delete)对信息alloca?换句话说,从基于堆的内存转换为基于堆栈的内存(仅适用于某些有限的情况)。只有当两个函数在同一个函数中(甚至在同一block{}中)时,才允许对malloc/free进行这种优化,并且每次malloc时都会调用free叫做。另外,让我们考虑一下指向malloced内存的指针没有保存在某个全局变量中。那么,GCC/LLVM+clang/Intel编译器是否会转换这样的代码块:{char*carray;carray=malloc(100);//ormalloc(N)//somestri

c++ - 编译器会优化 malloc/free 或 new/delete 对到 alloca

有没有成熟的C/C++编译器,能够优化malloc/free(或者new/delete)对信息alloca?换句话说,从基于堆的内存转换为基于堆栈的内存(仅适用于某些有限的情况)。只有当两个函数在同一个函数中(甚至在同一block{}中)时,才允许对malloc/free进行这种优化,并且每次malloc时都会调用free叫做。另外,让我们考虑一下指向malloced内存的指针没有保存在某个全局变量中。那么,GCC/LLVM+clang/Intel编译器是否会转换这样的代码块:{char*carray;carray=malloc(100);//ormalloc(N)//somestri

c++ - std::unordered_map<T,std::unique_ptr<U>> 可复制?海湾合作委员会错误?

g++--version产量:g++.exe(x86_64-posix-seh-rev0,BuiltbyMinGW-W64project)4.9.1Copyright(C)2014FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.程序:#include#include#includestatic_assert(!std::is_cop

c++ - std::unordered_map<T,std::unique_ptr<U>> 可复制?海湾合作委员会错误?

g++--version产量:g++.exe(x86_64-posix-seh-rev0,BuiltbyMinGW-W64project)4.9.1Copyright(C)2014FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.程序:#include#include#includestatic_assert(!std::is_cop

c++ - 与 auto_ptr 声明不同,unique_ptr 声明是否在其模板类型为不完整类型时是明确定义的?

我写了thisarticle并得到了一些让我感到困惑的评论。这基本上归结为我看过T2仅用作模板参数,并错误地得出结论,因此我可以借此机会进行前向声明:structT2;structT1{std::auto_ptrobj;};如果我不继续定义T2,这将调用UB在同一个TU的某个地方,因为std::auto_ptr来电delete在其内部T2*,和callingdeleteonanpointertoanobjectofanincompletetypewhosecompletetypehasanon-trivialdestructorisundefined:[C++11:5.3.5/5]:I

c++ - 与 auto_ptr 声明不同,unique_ptr 声明是否在其模板类型为不完整类型时是明确定义的?

我写了thisarticle并得到了一些让我感到困惑的评论。这基本上归结为我看过T2仅用作模板参数,并错误地得出结论,因此我可以借此机会进行前向声明:structT2;structT1{std::auto_ptrobj;};如果我不继续定义T2,这将调用UB在同一个TU的某个地方,因为std::auto_ptr来电delete在其内部T2*,和callingdeleteonanpointertoanobjectofanincompletetypewhosecompletetypehasanon-trivialdestructorisundefined:[C++11:5.3.5/5]:I

c++ - boost::shared_ptr<T> 和 boost::shared_ptr<const T> 是否共享引用计数?

关于boost::shared_ptr的陷阱有几个有趣的问题。s。其中之一是避免指向boost::shared_ptr的有用提示。和boost::shared_ptr到Derived类型的同一对象因为它们使用不同的引用计数并可能过早地销毁对象。我的问题:同时拥有boost::shared_ptr是否安全?和boost::shared_ptr指向T类型的同一对象,或者这会导致同样的问题吗? 最佳答案 绝对安全。以下代码示例:#include#includeintmain(int,char**){boost::shared_ptra(n

c++ - boost::shared_ptr<T> 和 boost::shared_ptr<const T> 是否共享引用计数?

关于boost::shared_ptr的陷阱有几个有趣的问题。s。其中之一是避免指向boost::shared_ptr的有用提示。和boost::shared_ptr到Derived类型的同一对象因为它们使用不同的引用计数并可能过早地销毁对象。我的问题:同时拥有boost::shared_ptr是否安全?和boost::shared_ptr指向T类型的同一对象,或者这会导致同样的问题吗? 最佳答案 绝对安全。以下代码示例:#include#includeintmain(int,char**){boost::shared_ptra(n