c++ - C++ 中的自动指针 (auto_ptr)

标签 c++ pointers auto-ptr

我试图找出这段代码打印的内容,但由于某种原因我无法输出它,它给了我一个错误:“1 [main] Q1c 5752 open_stackdumpfile: Dumping stack trace to Q1c.exe.stackdump ”。

double *dp=new double(1.2);
auto_ptr <double> autodp1(dp);
auto_ptr <double> autodp2=autodp1;
cout<<*autodp1<<endl;

我只想知道它会打印什么,如果它打印的话。

注意:本题为往届试卷,仅供复习。

最佳答案

代码 *autodp1 实际上是对空指针的取消引用。因此,代码表现出未定义的行为。

您首先构造autodp1 以指向新分配的double。但是随后 autodp2 的构造函数为自己获取拥有的内存并将 autodp1 设置为 null。

关于c++ - C++ 中的自动指针 (auto_ptr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481778/

相关文章:

C数组和指针参数

c++ - #include <gdiplus.h> 导致错误

c++ - 两个区间 [a,b] 之间的 double 随机数生成

c++ - 由于类型不匹配,无法将一个指针分配给另一个指针,或者编译器这样说

c++ - 全局指针是否初始化为零?

c++ - 从函数返回 auto_ptr 是否错误/容易出错?

c++ - 这是一个很好的 std::auto_ptr<> 用例吗?

c++ - 编译但失败的 C++ std::vector<std::auto_ptr<T>> 示例

c++ - Qt mouseReleaseEvent() 没有触发?

c++ - vector.size() 始终返回 0