GESP 六级 · GESP 202312 C++ 六级 第 21 题

判断题 · 答案 B · 考点:作用域与生命周期

← 整套速查表 GESP 六级 全部真题

题目

在下面 C++ 代码中,由于删除了变量 ptr,因此 ptr 所对应的数据也随之删除,故第 8 行代码被执行时,将报错。( )

int * ptr = new int(10);
cout << *ptr << endl;
delete ptr;
cout << *ptr << endl; // 第 8 行
答案:B

考点

作用域与生命周期

解题思维

这题考的是 delete 只释放内存不置空指针,导致悬空指针解引用属于未定义行为,不能断定必然报错。

常见错误

学生最容易误以为 delete 会把指针自动置成 nullptr,或者把未定义行为当成一定会崩溃。其实 delete 后指针仍存原地址,解引用是未定义行为,可能正常输出、可能崩溃、也可能其他诡异结果,所以‘将报错’这种绝对化表述是错的。

详细解析(节选)

【考点】指针基础|动态内存管理|内存生命周期|空指针与悬空指针|未定义行为

1. 考纲定位

GESP 六级《算法与程序设计》指针专项,命题人用这个题卡住的是「delete 操作语义」与「指针生命周期」的混淆。绝大多数考生误以为 delete 会同时置空指针,其实它只释放内存,指针仍保留原地址,由此产生悬空指针。题目把这种未定义行为说成「将报错」,是典型的绝对化陷阱。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断