问题标签 [auto-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么将 std::auto_ptr<> 与标准容器一起使用是错误的?
为什么使用std::auto_ptr<>
标准容器是错误的?
c++-cli - 托管 C++/CLI 类中的 auto_ptr 或 shared_ptr 等效项
在 C++/CLI 中,您可以在托管类中使用本机类型,但不允许在托管类中持有本机类的成员:在这种情况下您需要使用指针。
这是一个例子:
有人知道 C++/CLI 世界中的 shared_ptr 等价物吗?
编辑:感谢您的建议,“1800-信息”。根据您的建议,我检查了 STL.Net,但它仅适用于 Visual Studio 2008,它提供容器 + 算法,但没有智能指针。
c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误
如果我使用声明一个临时自动删除的字符缓冲区
然后缓冲区超出范围时会自动删除。我会假设缓冲区是使用 delete 删除的。
但是缓冲区是使用 new[] 创建的,因此严格来说应该使用 delete[] 删除缓冲区。
这种不匹配可能导致内存泄漏的可能性有多大?
c++ - 使用 Objective C 中的 C++:如何分配/解除分配?
new
目前,我的 Objective C 类通过在创建所有者时执行 a 并delete
在销毁时调用来使用 C++ 对象。但是还有其他方法吗?我希望能够声明一个auto_ptr
其范围持续到 Objective C 类的生命周期的持续时间。
c++ - std::auto_ptr 或 boost::shared_ptr 用于 pImpl 成语?
当使用pImpl 成语时,最好使用 aboost:shared_ptr
而不是 a std::auto_ptr
?我确定我曾经读过boost版本对异常更友好?
[编辑] 使用 std::auto_ptr<> 是否总是安全的,或者是否存在需要替代提升智能指针的情况?
c++ - auto_ptr 会防止这种情况吗?
我不太清楚 auto_ptr 在这种情况下是否会帮助我:
离开其封闭范围时,myA._member
引用是否有效?smart
如果 auto_ptr 不是这里的答案,那是什么?
编辑:我看到我让每个人都感到困惑的地方;我必须将 myA 返回范围之外,这就是为什么我关心 _member 在 smart 退出范围后是否有效。
c++ - 重新分配“auto_ptr”并管理内存
我有这样的情况:
有没有办法做到这一点?下面的代码会做我想要的吗?
的内存new_other_class
会在 的默认析构函数中被取消分配MyClass
吗?
shared-ptr - ATL CAutoPtr 和 STL std::auto_ptr 之间的区别?
我正在 MFC 中编写一些代码,我想使用自动指针。我遇到了两个不同的类,它们看起来做同样的事情:人们对这两种不同的实现有什么想法CAutoPtr
?std::auto_ptr
此外,我知道有std::tr1::shared_ptr
. shared_ptr
ATL/MFC 中有类似的吗?
visual-studio-2008 - VC2008中的自动指针构造函数
我有一个自动指针实现:
这在 Visual C++ 6 中运行良好。但是在 Visual C++ 2005 或 2008 中,我无法从函数返回自动指针,而不会出现严重错误。
例如
发生的情况是编译器创建一个临时 GAutoString 来保存函数的返回值,然后在将它传递给堆栈上的变量“a”时调用临时变量的运算符 T*(),然后调用 GAutoPtr( T *ptr = 0) 构造函数,而不是仅仅使用复制构造函数:GAutoPtr(AutoPtrRef p)
这会导致 temp auto ptr 删除内存,并且 'a' 持有指向已释放内存的指针。
但是在 VC6 中,它确实调用了正确的构造函数。现在说这一切,我也在 Linux 和 Mac 上使用 gcc,所以我写的任何代码也需要在那里工作。VC2008 阻止您在复制构造函数中使用非常量值变量。另外我也不想要“const”,因为复制构造函数获取内存块的所有权,这会从被复制的对象中删除所有权......从而修改它。
如何在 VC 2005/2008 中完成这项工作?
c++ - 为什么 auto_ptr 构造不能使用 = 语法
我遇到了一个对我来说没有多大意义的编译器错误:
错误:请求从“表*”转换为非标量类型“std::auto_ptr<表>”
但是,以下行确实有效:
构造函数的这个定义阻止它按我预期工作的原因是什么?我认为初始化声明使用了构造函数。
这是我auto_ptr
的构造函数(来自 SGI STL):