我正在开发一个非抢先式多线程库(在C中)。要求是使用getcontext
setcontext
等来创建新线程并对其进行管理。图书馆正常工作正常。Malloc不失败,但系统内存不足
我使用malloc为每个线程对象(MyThread的)和i通过打印消息"malloc failed"
如果malloc的返回NULL
。为了测试极端条件下,我跑它创建子线程来计算子calculations.I跑一个递归函数斐波纳契正常退出fib
随着数量的增加而达到极限,在fib 26
。
但malloc不抱怨。它是到达OOM
并杀死进程的linux系统。
问题:为什么malloc
返回成功(一个新的指针),而系统发现自己的空间不足?
是的。谢谢。按预期工作 – woodstok 2014-09-10 18:40:35