为了账号安全,请及时绑定邮箱和手机立即绑定

若将第10行代码替换为 p = &b;程序依然可以访问p所指内容,所以此段代码无法证明大括号内的内存是否销毁或保留

#include <stdio.h>

#include <iostream>

int main()

{

int* p = nullptr;

{  

int b = 20;

p = &b;

}

*p = 4;

printf(" *p is %d\n", *p);

system("pause");

    return 0;

}


正在回答

2 回答

c++中清变量不清指针,b被回收,p不变,成为野指针,若此时内存被其他程序占用,则后果不堪设想。

0 回复 有任何疑惑可以回复我~

p指向的是一块实际内存地址,就算b被回收了,p还是指向的那块地址,变的是那块地址存储的内容,所谓回收是存储在实际内存中的数据的数清理。

printf(" *p is %d\n", *p);

*p = 4;

可以这样,改一下位置

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

若将第10行代码替换为 p = &b;程序依然可以访问p所指内容,所以此段代码无法证明大括号内的内存是否销毁或保留

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信