我遇到了这样的C++测验:如果指针被删除两次会发生什么?
答案是D.
我有点失落,"陷阱"是什么意思?它是C++中的一个特殊术语吗?
它在C++中没有任何意义.它可能意味着操作系统级错误(例如Posix信号),但没有上下文我不能说.
正确的答案是它会导致不确定的行为; 但是所有答案都可以被认为是正确的,因为未定义的行为可能导致任何这些事情发生.
我将直接引用有关陷阱的维基百科文章:
在计算和操作系统中,陷阱(也称为异常或故障)通常是[NB 1] [1]一种通常由异常条件引起的同步中断(例如,断点,除零,无效的存储器访问) ).陷阱通常导致切换到内核模式,其中操作系统在将控制返回到原始进程之前执行一些动作.系统进程中的陷阱比用户进程中的陷阱更严重,并且在某些系统中是致命的.在某些用法中,术语陷阱特指用于启动上下文切换到监视程序或调试器的中断.
这是高度通用的术语,并不是由C++定义的,更不用说特定于它了.更重要的是,您必须注意多选答案中的"可以",因为无法保证在双重删除对象时会发生任何事情.
事实上,所有四个答案基本上都说同样的事情.
测验似乎很混乱,因为"删除指针 "可能不是它的意思.
不要与SNMP陷阱混淆:
在SNMP中,陷阱是一种PDU,用于报告有关受管子系统的警报或其他异步事件.