use*_*935 5 c++ smart-pointers unique-ptr
这导致我的程序断言失败:
int a = 5;
std::unique_ptr<int>intptr(&a);
Run Code Online (Sandbox Code Playgroud)
错误
文件:f:\dd\vctools\crt\crtw32\misc\dbgdel.cpp
线路:32
表达式:_BLOCK_TYPE_IS_VALID(pHead > nBlockUse)
当我使用“new”或“= make_unique (..)”初始化它时效果很好,但我很好奇为什么我不能通过给出现有变量的地址来初始化它。
变量a在堆栈上,如果将它绑定到unique_ptr,当unique_ptr超出范围时,它将对无法删除的变量调用delete。
基本上你无法获得自动存储变量的所有权,只能获得动态变量的所有权。