我对智能指针有点困惑。在下面的代码中,& 运算符应该返回智能指针分配的地址还是它所控制的指针的地址?
main() {
std::shared_ptr<int> i = std::shared_ptr<int>(new int(1));
std::shared_ptr<int> j = i;
printf("(%p, %p)\n", &i, &j);
}
运行代码,我得到了不同的地址。如果我使用原始指针运行等效代码,我会得到相同的地址:
main() {
int e = 1;
int *k = &e;
int *l = k;
printf("(%p, %p)\n",k,l);
}