【问题标题】:Copy pointer content to stack variable将指针内容复制到堆栈变量
【发布时间】:2019-02-22 09:36:39
【问题描述】:

我想到了这个疑问。这可能吗? 考虑这段代码:

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

提前致谢和问候

【问题讨论】:

  • “声明 int x 并存储在 9 内”是什么意思?
  • int x = *j;像这样的

标签: c++11 pointers memory


【解决方案1】:

您绝对可以读取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 的生命周期由周围作用域自动管理。

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2020-03-09
    相关资源
    最近更新 更多