gpt4 book ai didi

c++ - 异常对象的空间在哪里,是堆还是栈,在不同的类中如何访问?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:32 27 4
gpt4 key购买 nike

最近有个面试官问我C++中的异常对象分配在哪里,是堆还是栈?我不确定,但我回答了栈,因为我认为没有“new”或“malloc” .是否正确?

然后他一直问我它是否在堆栈上,假设类 A 抛出一个异常对象,假设是“e”,类 B 捕获“e”。既然“e”在A的栈上,那么B怎么访问到这个“e”呢?

第二个问题我不是很清楚。任何人都可以给我一些示例代码来显示“A 类抛出 e 而 B 类捕获它”吗?另外,我猜B可以通过复制值或地址来捕获e,但是面试官只是否定了我的答案,没有给我正确的答案,那么正确的答案是什么,有没有什么机制可以确保类对象可以捕获其他类对象的异常?谢谢~

最佳答案

来自 [except.throw]/15.1/4:

The memory for the exception object is allocated in an unspecified way, except as noted in 3.7.4.1.

最后的引用资料 [basic.stc.dynamic.allocation]/4 说:

[Note: In particular, a global allocation function is not called to allocate storage for [...] an exception object (15.1). — end note]

关于c++ - 异常对象的空间在哪里,是堆还是栈,在不同的类中如何访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259652/

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