【发布时间】:2017-08-12 03:37:14
【问题描述】:
原始指针可以指向分配在堆栈或堆上的对象。
堆分配示例:
// heap allocation
int* rawPtr = new int(100);
std::cout << *rawPtr << std::endl; // 100
堆栈分配示例:
int i = 100;
int* rawPtr = &i;
std::cout << *rawPtr << std::endl; // 100
使用 auto_ptr 进行堆分配示例:
int* rawPtr = new int(100);
std::unique_ptr<int> uPtr(rawPtr);
std::cout << *uPtr << std::endl; // 100
使用 auto_ptr 进行堆栈分配示例:
int i = 100;
int* rawPtr = &i;
std::unique_ptr<int> uPtr(rawPtr); // runtime error
“智能指针”是否旨在用于指向堆上动态创建的对象?对于 C++11,我们是否应该继续使用原始指针来指向堆栈分配的对象?谢谢。
【问题讨论】:
标签: c++11 pointers smart-pointers heap-memory unique-ptr