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

Kha*_*der 2 c++ pointers auto-ptr

我试图找出这段代码打印的内容,但由于某些原因我无法输出它,它给了我一个错误:"1 [main] Q1c 5752 open_stackdumpfile:将堆栈跟踪转储到Q1c.exe.stackdump".

double *dp=new double(1.2);
auto_ptr <double> autodp1(dp);
auto_ptr <double> autodp2=autodp1;
cout<<*autodp1<<endl;
Run Code Online (Sandbox Code Playgroud)

我只是想知道它会打印什么,如果它甚至打印.

注意:这个问题在过去的试卷中,仅供修改.

Jur*_*aho 5

该代码*autodp1实际上是空指针的解引用.因此代码表现出不确定的行为.

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

  • 然后请将其标记为这样,以便Juraj得到适当的信任. (2认同)