问题标签 [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.

0 投票
6 回答
48192 浏览

c++ - 为什么将 std::auto_ptr<> 与标准容器一起使用是错误的?

为什么使用std::auto_ptr<>标准容器是错误的?

0 投票
3 回答
6778 浏览

c++-cli - 托管 C++/CLI 类中的 auto_ptr 或 shared_ptr 等效项

在 C++/CLI 中,您可以在托管类中使用本机类型,但不允许在托管类中持有本机类的成员:在这种情况下您需要使用指针。

这是一个例子:

有人知道 C++/CLI 世界中的 shared_ptr 等价物吗?

编辑:感谢您的建议,“1800-信息”。根据您的建议,我检查了 STL.Net,但它仅适用于 Visual Studio 2008,它提供容器 + 算法,但没有智能指针。

0 投票
8 回答
9124 浏览

c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误

如果我使用声明一个临时自动删除的字符缓冲区

然后缓冲区超出范围时会自动删除。我会假设缓冲区是使用 delete 删除的。

但是缓冲区是使用 new[] 创建的,因此严格来说应该使用 delete[] 删除缓冲区。

这种不匹配可能导致内存泄漏的可能性有多大?

0 投票
3 回答
2768 浏览

c++ - 使用 Objective C 中的 C++:如何分配/解除分配?

new目前,我的 Objective C 类通过在创建所有者时执行 a 并delete在销毁时调用来使用 C++ 对象。但是还有其他方法吗?我希望能够声明一个auto_ptr其范围持续到 Objective C 类的生命周期的持续时间。

0 投票
9 回答
9871 浏览

c++ - std::auto_ptr 或 boost::shared_ptr 用于 pImpl 成语?

当使用pImpl 成语时,最好使用 aboost:shared_ptr而不是 a std::auto_ptr?我确定我曾经读过boost版本对异常更友好?

[编辑] 使用 std::auto_ptr<> 是否总是安全的,或者是否存在需要替代提升智能指针的情况?

0 投票
3 回答
580 浏览

c++ - auto_ptr 会防止这种情况吗?

我不太清楚 auto_ptr 在这种情况下是否会帮助我:

离开其封闭范围时,myA._member引用是否有效?smart如果 auto_ptr 不是这里的答案,那是什么?

编辑:我看到我让每个人都感到困惑的地方;我必须将 myA 返回范围之外,这就是为什么我关心 _member 在 smart 退出范围后是否有效。

0 投票
2 回答
280 浏览

c++ - 重新分配“auto_ptr”并管理内存

我有这样的情况:

有没有办法做到这一点?下面的代码会做我想要的吗?

的内存new_other_class会在 的默认析构函数中被取消分配MyClass吗?

0 投票
3 回答
1887 浏览

shared-ptr - ATL CAutoPtr 和 STL std::auto_ptr 之间的区别?

我正在 MFC 中编写一些代码,我想使用自动指针。我遇到了两个不同的类,它们看起来做同样的事情:人们对这两种不同的实现有什么想法CAutoPtrstd::auto_ptr

此外,我知道有std::tr1::shared_ptr. shared_ptrATL/MFC 中有类似的吗?

0 投票
2 回答
513 浏览

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 中完成这项工作?

0 投票
4 回答
3354 浏览

c++ - 为什么 auto_ptr 构造不能使用 = 语法

我遇到了一个对我来说没有多大意义的编译器错误:

错误:请求从“表*”转换为非标量类型“std::auto_ptr<表>”

但是,以下行确实有效:

构造函数的这个定义阻止它按我预期工作的原因是什么?我认为初始化声明使用了构造函数。

这是我auto_ptr的构造函数(来自 SGI STL):