是否可以在通话前“保留”内存malloc()
?换句话说,我可以做一些事情(可能是特定于操作系统的)来确保有一定数量的可用内存,以便您知道您的下一个malloc()
(或realloc()
等)调用不会由于内存不足而返回 NULL 吗?
“保留”或“预分配”可能会像 malloc 一样失败,但如果成功,我想确保我的下一个 malloc() 成功。
笔记:
- 是的,我知道,我想在分配内存之前分配内存。这是完全正确的。问题是后来的分配并没有真正在我的控制之下,我希望能够假设它们成功了。
- 关于多线程代码的答案也有加分。
- 我的动机:我正在考虑在我的 C 开发中采用glib
abort()
,但显然它是在它无法分配内存的时候,这对我来说是不可接受的。 - 也许是一个用其他东西动态替换 malloc 符号的解决方案?或者包装 sbrk 系统调用的函数的符号?