问题标签 [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 投票
2 回答
116 浏览

c++ - 我相信 Stroustup 的书第三版第 368 页有错字。有人可以确认吗?

我相信从 Stroustup 的书中提取的这段代码片段有一个错字,第 368 页:

不应该

反而 ?

0 投票
2 回答
1043 浏览

c++ - 在向量中存储指向 auto_ptr 的指针

可以将指向 auto_ptr(s) 的指针存储在 std::vector 中吗?安全吗?

我列举了一个读取 XML 文件的文件夹,并使用 auto_ptr 为每个文件夹创建一个对象。我事先不知道会有多少 XML 文件,我想使用一个向量来基本上保留指向它们的指针列表。

我还假设当从向量中删除指针(或向量被销毁)时,指针几乎消失了,所以我不必担心将它们设置为 NULL。

0 投票
5 回答
271 浏览

c++ - std::auto_ptr 和 boost::shared_ptr 的语义含义

在我们的大型项目中,我们有很多具有以下内容typedef的类:

它们的使用非常方便。但我怀疑在auto_ptr语义上是否接近Ptrshared_ptr与 ref 相同?还是应该auto_ptr明确使用,因为它具有“所有权转移”语义?

谢谢,

0 投票
2 回答
265 浏览

c++ - 从函数中按 C++ 中的值返回 auto_ptr 有效负载

auto_ptrC++ 标准是否保证在从函数中按值返回有效负载时不会发生崩溃:

根据标准,这里发生了什么:*foo被复制,然后foo被销毁,最后return被执行?还是有另一个步骤顺序?

我用 GCC 测试了这个例子,没有崩溃,但我不确定它是否可以与其他编译器一起使用。

0 投票
1 回答
105 浏览

c++ - 关于 `auto_ptr` 模板类,这两个来源之间是否存在矛盾?

网站在“所有权、来源和汇”上声明:

“当你复制一个auto_ptr时,你会自动将所有权从源转移auto_ptr到目标auto_ptr如果目标auto_ptr已经拥有一个对象,则该对象首先被释放。复制后,只有目标auto_ptr拥有指针并在适当的时候将其删除,而源被设置回空状态,不能再用于引用拥有的对象。”。

现在考虑Stroustrup 的The C++ Programming Language Third Edition的第 14 章第 368 页中operator=()的定义:templacte<classX> class auto_ptr

auto_ptr& operator=(auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; }

我看不到操作员释放由 寻址的对象ptr,以防万一ptr != 0

0 投票
1 回答
1586 浏览

c++ - 将 auto_ptr 传递给期望对 auto_ptr 进行常量引用的函数有什么危险?

Nicolai Josuttis 在他的《C++ 标准库 - 教程和参考》一书中,在第 44 页写了以下段落:

根据 auto_ptrs 的概念,可以通过使用常量引用将所有权转移到函数中。这是非常危险的,因为人们通常期望当您将对象作为常量引用传递时,它不会被修改。幸运的是,有一个较晚的设计决定使 auto_ptrs 的危险性降低。通过一些棘手的实现技术,使用常量引用是不可能转移所有权的。事实上,你不能改变任何常量 auto_ptr 的所有权:……

如果不可能通过常量引用来更改所有权,为什么上面的“这很危险”和“不太危险”这样的表达方式?

0 投票
2 回答
5210 浏览

c++ - Auto Pointer Issue

I'm new to C++ and a bit confused regarding auto_ptr.

I have a class which inside has a static auto_ptr.

Util::getDBConnection() implementation :

However when my program finished, it always hit an exception in memory, during the destructor of auto pointer.

The exception is "Unhandled exception at 0x00000001800024e8 in TestDLL.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff."

I understand that auto_ptr will try release any memory when it reach the end of its scope. But, in this case I don't have any idea what goes wrong. Does anyone know what is the possible cause?

0 投票
1 回答
375 浏览

c++ - auto_ptr 上的问题

假设,我们有以下代码

我感兴趣:什么是好的,什么是安全的,什么是合法的,什么不是这个代码?据我所知, auto_ptr 是这样的,例如下面的代码

此代码将为第一个 auto_ptr 对象打印一个 NULL 地址,为第二个对象打印一些非 NULL 地址,表明源对象在分配期间丢失了引用 (=)。示例中的原始指针 i 不应被删除,因为它将被拥有该引用的 auto_ptr 删除。事实上,new int 可以直接传递给 x,而无需 i。我如何确定我的代码中的哪一行是安全的,哪一行不是?

0 投票
3 回答
5831 浏览

c++ - ISO C++ 禁止声明没有类型的“auto_ptr”

我正在尝试编写一个小型应用程序,并且使用 auto_ptr 遇到了编译时错误。

我最初厌倦了用我创建的类创建一个智能指针,但是如果我尝试创建一个 int 类型的智能指针,就会出现同样的错误,所以我肯定做错了其他事情。我正在按照此处给出的示例进行操作。.

我有一种感觉,这个问题的答案会导致我打自己一巴掌。

我在这个文件的底部声明了智能指针。

这是我的课,dose_calac.h。

感激地收到任何帮助或建议。

0 投票
4 回答
1569 浏览

c++ - 初始化 std::auto_ptr: "错误: 调用不匹配 '(std::auto_ptr) (int*)'"