gpt4 book ai didi

c++ - 对范围和堆内存生命周期感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 14:47:01 24 4
gpt4 key购买 nike

好的,我正在尝试掌握堆的概念及其范围

#include <iostream>
int main(){

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

std::cout<<*x;//ERROR Use of undeclared identifier 'x'
}

但是既然我把它分配到了堆上,为什么它在 block 的作用域之后就不再存在了?

最佳答案

but since I allocated it to the heap, why doesn't it exist anymore after the scope of the block?

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

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

关于c++ - 对范围和堆内存生命周期感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com