首页 > 解决方案 > 将指针内容复制到堆栈变量

问题描述

我有这个疑问浮现在我的脑海里。这可能吗?考虑这段代码:

int* p;
int j = 9;
p = &j;
// is it possible to declare int x and store inside 9?
// so if I do delete p; that value is stored in x

提前致谢和问候

标签: c++11pointersmemory

解决方案


您绝对可以读取p引用的值并将其复制到另一个中int,如下所示:

int x = *p;

// The value has been copied, j and hence *p aren't affected by changes to x:
++x;
assert(x > *p);

但是,您绝对不想这样做delete p,因为它不是堆分配的new. 相反,它p指向j,并且j有一个由周围作用域自动管理的生命周期。


推荐阅读