1

在 C 中,如果函数不返回,线程的执行堆栈会发生什么?

void funcB() __attribute__ ((noreturn));

int funcA (...)
{
   // do stuff
   funcB();
   // do more stuff
}

这种情况的一个例子是,funcA 是创建新线程的内核函数,而 funcB 是将新线程切换到用户模式并让它运行的内核代码。

谢谢你。

4

1 回答 1

0

你见过这个吗?http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Function-Attributes.html

正如它在关于的部分中所说noreturn

不要假设调用函数保存的寄存器在调用 noreturn 函数之前已恢复。

我假设这意味着不能保证,例如,堆栈指针(或其他堆栈帧元素)将在noreturn函数完成后恢复。

于 2012-10-04T00:23:56.137 回答