草庐IT

malloc_ptr_t

全部标签

c++ - auto_ptr 内容的三元运算符不起作用

我将auto_ptr初始化为NULL,稍后在游戏中我需要知道它是否为NULL以返回它或一个新拷贝。我试过了auto_ptrret=(mReqContext.get()!=0)?mReqContext:newRequestContext();还有其他几个类似的东西转换等等,但是g++试图调用auto_ptrs不存在的运算符?(三元运算符)而不是使用RequestContext*进行三元比较。即使我施放它也不起作用。有什么提示吗?编辑不相等的相等 最佳答案 我想情况类似于以下情况:#include#includeintmain(){st

c++ - C(++) malloc 混淆

我只是没有进一步了解在C和主要是C++中为数组分配内存。我已经查找过示例,但没有任何对我有用的示例,至少看起来是这样。所以如果我在这里有这样的typedef:typedefstruct{intx;inty;}Coordinate;Coordinate*myList;我也有一个Coordinate类型的数组,我如何动态地向它追加项目。我所知道的是,我必须在C中使用malloc和后来的free,在C++中使用new/delete。(Malloc吓死我了)所以我的目标是这样的功能:voidAddSomething(intx,inty){//myListmalloc/newmagichere}

c++ - 为什么int** ptr在访问ptr[i][j]时不指向与int arr[3][3]相同的地址?

我正在回答这个question但是当我测试下面的代码时我很困惑。#includeusingnamespacestd;intmain(){int**ptr;intarr[3][3];ptr=(int**)arr;for(inti=0;i但是我得到了这个输出:0x7fff5700279c=?00x7fff570027a0=?0x40x7fff570027a4=?0x80x7fff570027a8=?00x7fff570027ac=?0x40x7fff570027b0=?0x80x7fff570027b4=?00x7fff570027b8=?0x40x7fff570027bc=?0x8为什么

c++ - shared_ptr 与指针共存

我有一个函数如下voida(shared_ptrval){...}有时候,我想传入一个堆分配的对象shared_ptrv(newX());a(v);其他时候,我想传入一个堆栈分配的对象classC{//doesn'tworkproperlyb/cwhentheshared_ptrdiesitwilltrytodeletex...C(){a(shared_ptr(&x));}Xx;};让函数接受智能指针,同时让智能指针引用堆栈分配对象的最佳方法是什么?或者我应该走Java路线并从堆中分配所有内容? 最佳答案 我只想让函数采用这样的模板

c++ - std::list、std::vector 方法和 malloc()

在中断处理程序下使用STL:list和STL::vector类型我想避免调用malloc()。问题:防止在STL列表和vector中调用malloc()的最佳方法是什么?创建具有预定义大小的结构然后避免push/pop/erase调用就足够了吗?提前致谢 最佳答案 std::list和std::vector等STL容器具有接受Allocator类型的构造函数。通过提供您自己的分配器而不是使用默认分配器,您可以控制容器分配内存的方式。这个选项很少使用,但是在实时环境中使用你自己的分配器是一个很好的例子,说明了这个特性在哪里有用(并证明

c++ - 在 boost::ptr_unordered_map 中存储指向 const 对象的指针

我似乎做不到boost::ptr_unordered_map工作-底层实现看起来像是将东西转换为void*.我是否只需要硬着头皮让我的方法包装对此的访问做一个const_cast插入项目时,或者我在这里遗漏了什么?有什么方法可以存储指向const对象的指针(constFoo*)? 最佳答案 看起来这是不可能的。解决方法是包装对ptr_unordered_map的访问.插入方法应该采用constauto_ptr然后执行const_cast插入它。如果您在删除元素时将auto_type交还给客户端代码,则需要从中解压指针并将其传输到co

c++ - Ptr-to-member 模板参数的 Friend 语法

好吧,所以我认为这是一个纯粹的C++语法问题。我有一个用ptr-to-member作为其模板参数之一定义的类:templateclassMy_list{我有另一个简单的类,它是这个类的友元。通常,我会写:classMy_friend_class{templatefriendclassMy_list;};...但是,因为第二个模板参数不是那么自由...我该如何表达友元?谢谢! 最佳答案 也许更好的问题是“为什么?”而不是“如何?”您到底想达到什么目的?当您的C++代码变得复杂和丑陋时,这通常是一个警告,表明您正在错误地处理问题。

c++ - 指针 - 将 ptr 传递给 ptr 或传递 ptr 的地址

我正在尝试使用两种方法删除示例二叉搜索树的左子节点(10):方法1:通过将指针传递给指向当前节点的指针。方法2:通过将指针的地址传递给当前节点。这不会删除节点,但调用delete会破坏指针排列,导致打印节点时发生崩溃。树看起来像这样,我正在尝试删除10并用5替换它20|10--|---30|5---|我对指针有一些了解。但是,我仍然不清楚指针的这种行为。#includeclassNode{public:Node(intkey):leftChild(0),rightChild(0),m_key(key){}~Node(){}Node*leftChild;Node*rightChild;i

c++ - 从源代码编译后未安装 boost ptr_container 库

我已经将boost库从以前的1.54(svn源)更新到1.57(git源)。尽管我使用了相同的./b2参数,但目标目录不包含ptr_container库。具有克隆存储库的目录在此路径上正确包含ptr_container库:boost_git/libs/ptr_container我正在使用以下命令构建它:./b2--install--prefix=$SHL_PATH/boost-sNO_BZIP2=1-sNO_ZLIBruntime-link=sharedlink=shared-j2install但没有成功。编辑:似乎只有从git构建时才会出现问题。当我从boost站点下载zip包时,目

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib