&引用;如果是C++;指针被删除两次,可能会导致陷阱--陷阱是什么意思? 我遇到这样一个C++测验:如果指针被删除两次会发生什么? A) 它可以中止程序 B) 它可能导致失败 C) 它可能会导致错误 D) 它会导致陷阱

&引用;如果是C++;指针被删除两次,可能会导致陷阱--陷阱是什么意思? 我遇到这样一个C++测验:如果指针被删除两次会发生什么? A) 它可以中止程序 B) 它可能导致失败 C) 它可能会导致错误 D) 它会导致陷阱,c++,terminology,C++,Terminology,答案是D 我有点迷路了,“陷阱”是什么意思?它是C++中的一个特殊术语吗?< /P> < P>我将直接引用: 在计算和操作系统中,陷阱(也称为异常或故障)通常是[NB 1][1]一种同步中断,通常由异常情况(例如断点、除零、无效内存访问)引起。陷阱通常导致切换到内核模式,其中操作系统在将控制权返回到原始进程之前执行一些操作。系统进程中的陷阱比用户进程中的陷阱更严重,并且在某些系统中是致命的。在某些用法中,术语陷阱特别指用于启动到监控程序或调试器的上下文切换的中断 这是高度概括的术语,不是由C++

答案是D


我有点迷路了,“陷阱”是什么意思?它是C++中的一个特殊术语吗?< /P> < P>我将直接引用:

在计算和操作系统中,陷阱(也称为异常或故障)通常是[NB 1][1]一种同步中断,通常由异常情况(例如断点、除零、无效内存访问)引起。陷阱通常导致切换到内核模式,其中操作系统在将控制权返回到原始进程之前执行一些操作。系统进程中的陷阱比用户进程中的陷阱更严重,并且在某些系统中是致命的。在某些用法中,术语陷阱特别指用于启动到监控程序或调试器的上下文切换的中断

这是高度概括的术语,不是由C++定义的,更不用说具体的了。更重要的是,你必须注意多项选择题答案中的“可以”,因为不能保证当你双重删除一个对象时会发生任何事情

事实上,这四个答案基本上说的是同一件事。

无论如何,这个测验看起来很混乱,因为“删除指针”可能不是它的意思

不要与SNMP陷阱混淆:

在SNMP中,陷阱是一种PDU,用于报告有关受管子系统的警报或其他异步事件


我将直接引述:

在计算和操作系统中,陷阱(也称为异常或故障)通常是[NB 1][1]一种同步中断,通常由异常情况(例如断点、除零、无效内存访问)引起。陷阱通常导致切换到内核模式,其中操作系统在将控制权返回到原始进程之前执行一些操作。系统进程中的陷阱比用户进程中的陷阱更严重,并且在某些系统中是致命的。在某些用法中,术语陷阱特别指用于启动到监控程序或调试器的上下文切换的中断

这是高度概括的术语,不是由C++定义的,更不用说具体的了。更重要的是,你必须注意多项选择题答案中的“可以”,因为不能保证当你双重删除一个对象时会发生任何事情

事实上,这四个答案基本上说的是同一件事。

无论如何,这个测验看起来很混乱,因为“删除指针”可能不是它的意思

不要与SNMP陷阱混淆:

在SNMP中,陷阱是一种PDU,用于报告有关受管子系统的警报或其他异步事件


<>这在C++中没有任何意义。这可能意味着操作系统级别的错误(比如Posix信号),但如果没有上下文,我就不能说了


正确的答案是它会导致未定义的行为;但是所有的答案都可以被正确地对待,因为未定义的行为可能导致任何这些事情发生。

< P>这在C++中没有任何意义。这可能意味着操作系统级别的错误(比如Posix信号),但如果没有上下文,我就不能说了


正确的答案是它会导致未定义的行为;但是所有的答案都可以被认为是正确的,因为未定义的行为可能会导致这些事情发生。

删除已经删除的相同内存是未定义的行为。任何事情都可能发生,尽管在我的例子中,它给出了一个运行时错误。用C++编写的+4.4.1

我的节目:

int main()
{
    int x = 5;
    int *ptr = &x;
    delete ptr;
    delete ptr;
}
它给出了以下错误:

*** Error in `./t': free(): invalid pointer: 0xbf971994 ***

删除已删除的相同内存是未定义的行为。任何事情都可能发生,尽管在我的例子中,它给出了一个运行时错误。用C++编写的+4.4.1

我的节目:

int main()
{
    int x = 5;
    int *ptr = &x;
    delete ptr;
    delete ptr;
}
它给出了以下错误:

*** Error in `./t': free(): invalid pointer: 0xbf971994 ***

正确答案:
E)它会让恶魔飞出你的鼻子
(我不是开玩笑)所有答案都是正确的;它可以导致任何事情。@bolov虽然可以想象,但这不太可能,不是吗?@Yakk也许我没有意识到一个更大的问题;哪些硬件可能导致所述行为?我计划今天晚些时候在公共场所,那里的存在恶魔是不幸的,所以最好仔细检查一下我的硬件。正确答案:
E)它会让恶魔从你鼻子里飞出来(我不是开玩笑)所有答案都是正确的;它可以导致任何事情。@bolov虽然可以想象,但这不太可能,不是吗?@Yakk也许我没有意识到一个更大的问题;哪些硬件可能导致所述行为?我计划今天晚些时候在公共场合,那里的存在恶魔将是不幸的,所以最好仔细检查我的硬件。我们可以说。这是一个公认的通用计算术语。当我们从事语言律师工作时,这个“任何事情都有可能发生”的千篇一律的答案是很好的,但这家伙问的是在实践中会发生什么。实际上,“任何事情都有可能发生”根本不是真的。@LightnessRacesinOrbit:好吧,这还不足以让我知道它在这个上下文中的具体含义,所以我至少不能说。对不起,我把我的无知推到了别人身上,如果这个词有一个定义明确且被普遍接受的含义,而我还没有遇到。我并没有说任何事情都可能发生,只是这些事情都可能发生。我在回答中引用了它的定义。所以我的回答可能会对你有所帮助。@LightnessRacesinOrbit:谢谢。引用Wikipedia页面的来源,“这个术语与汇编程序编程相关[…],并且似乎在程序员中作为汇编程序的角色逐渐淡出历史。”