在C中,如果函数没有返回,线程的执行堆会发生什么?
void funcB() __attribute__ ((noreturn));
int funcA (...)
{
// do stuff
funcB();
// do more stuff
}
这种情况的一个例子是,funcA是创建新线程的内核函数,funcB是将新线程切换到用户模式并让它运行的内核代码。
谢谢。
答案 0 :(得分:0)
正如关于noreturn
:
在调用noreturn函数之前,不要假设调用函数保存的寄存器已恢复。
我认为这意味着无法保证在noreturn
函数完成后,例如堆栈指针(或其他堆栈框架元素)将被恢复。