我是C++的新手,我在电脑上测试了一个独立指针:我以为它会被分配到堆上,但实际上它出现在了栈里。这让我感到困惑。那么,独立指针是在堆上还是栈上分配内存的呢?
#include <memory>
#include <stdio.h>
void RawPointer()
{
int *raw = new int;// create a raw pointer on the heap
printf("raw address: %p\n", raw);
*raw = 1; // assign a value
delete raw; // delete the resource again
}
void UniquePointer()
{
std::unique_ptr<int> unique(new int);// create a unique pointer on the stack
*unique = 2; // assign a value
// delete is not neccessary
printf("unique pointer address: %p\n", &unique);
}
int main(){
RawPointer();
UniquePointer();
}
它是以 shell 形式出现的:
raw address: 0x555cd7435e70
unique pointer address: 0x7ffcd17f38b0
感谢您们兄弟们,
unique_ptr
和它所封装的指针之间存在差异。 - 463035818_is_not_a_number