【发布时间】:2013-09-06 17:31:07
【问题描述】:
例如当我在函数中使用throw时
try {
// ...
throw MyExceptionType()
// ...
} catch(MyExceptionType& exp){ /* ... */ }
MyExceptionType 分配在哪里?它在堆栈上吗?如果是这样,在我的catch 块中修改exp 是否安全?在catch 中调用一些其他函数并使用堆栈呢?
在类似的情况下,我有:
try {
char my_array[32];
throw my_array;
} catch(char* error_string){ /* ... */ }
error_string 是否指向进程堆栈中的某个位置?如果我在 catch 块内调用一些函数,我可以运行数组吗?
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/2404288/…
-
HAL 的链接有很好的解释。我想知道 C++11 如何使“特殊位置”线程安全。
-
@brianbeuning: 通过告诉编译器制造商它应该是 :)
标签: c++ exception-handling try-catch