H-0*_*005 1 c++ pointers scope heap-memory
我知道这是一个愚蠢的问题,我无法理解我是如何陷入困境的,但我在这里。在这段代码中,当我尝试在它声明的范围之外访问x 时(在堆上声明),它告诉我x 未在此范围内声明。
{
int * x = new int;
}
*x = 5; /// Error
Run Code Online (Sandbox Code Playgroud)
我以前从未遇到过这个问题。在我打电话之前x不应该存在delete x;
吗?
x
(指针)与其指向的事物(整数)之间存在差异。
int 不是“在堆上声明的”——堆不是作用域,也不包含声明。x
另一方面,它只是堆栈上的一个普通变量,当其包含块的执行完成时就会消失。
该int
堆上并继续在堆上存在,但是当你扔掉x
(指针),你有没有办法进入它和int
已经泄漏。
归档时间: |
|
查看次数: |
120 次 |
最近记录: |