C ++:唯一指针不释放内存

时间:2015-11-10 09:15:40

标签: c++

我有以下代码:

#include <iostream>
#include <memory>

using namespace std;

int main() {
    string* s = new string("foo");

    {
        unique_ptr<string> ss(s);
    }

    cout << *s << endl;
}

如果我正确理解了唯一指针,那么ss一旦声明就会获得s指向的字符串对象的所有权,然后在它退出本地范围时销毁该对象。

但是,cout语句仍然正常运行,这意味着字符串对象根本不会被销毁。你能解释一下这里发生了什么吗?感谢。

PS :我在OS X上用g ++和clang测试了代码。

编辑:好的,我现在明白这是未定义的行为。感谢所有有用的评论。

0 个答案:

没有答案