混淆了范围和堆内存生命周期

0 c++

好吧所以我试图掌握堆的概念及其范围

#include <iostream>
int main(){

    {
        int* x = new int(10);
    }

    std::cout<<*x;//ERROR Use of undeclared identifier 'x'
}
Run Code Online (Sandbox Code Playgroud)

但是因为我将它分配给堆,为什么它不再存在于块的范围之后呢?

eer*_*ika 5

但是因为我将它分配给堆,为什么它不再存在于块的范围之后呢?

x 是一个自动变量,因此它不存在于声明它的范围之外.

你动态分配的对象确实仍然存在.但是由于在生命周期之后x不再有任何指向该对象的指针,因此不再可能使用它也不能删除它.这称为内存泄漏.