2
A
回答
4
我不知道不好的做法是不好的做法來分配內存,但它是罕見的。 malloc()
失敗通常表示您的程序不太可能從中恢復的主要系統問題。如果你的系統不同,你的例子可能很實用。
注意 - 此答案假定sizeof(FOO)
是「合理的」,並且您的malloc()
不只是因爲您要求太多內存而拒絕。
1
這並不能保證malloc()
的結果。如果malloc返回NULL
,可能有一個原因(例如內存不足)。你可能會陷入無限循環。
此外,如果你是一個Linux平臺上運行此:
默認情況下,Linux遵循一個樂觀的內存分配策略。這意味着當malloc()返回非NULL時,不能保證內存真的可用。
這意味着可以說,一遍又一遍地調用malloc確實發生了返回非NULL的事情,由於Linux的「樂觀」策略,非NULL仍然不能保證你有任何工作。
我認爲這段代碼正在爲您設置一個調試噩夢。
相關問題
- 1. malloc內部循環
- 2. malloc會保證內存對齊嗎?
- 3. 如果我使用new或free來使用malloc,結果如何?
- 4. 對齊malloc和標準malloc不同嗎?
- 5. 的malloc在for循環
- 6. infinite循環內的malloc()
- 7. malloc在函數中效果不好
- 8. 我正確使用malloc嗎?
- 9. 使用malloc塊的結構
- 10. 使用malloc與結構
- 11. snprintf調用malloc或snprintf不調用malloc
- 12. 使用calloc()而不是malloc()和memset()有什麼好處嗎?
- 13. malloc結構C
- 14. 我可以使用malloc來引用而不是指針嗎?
- 15. 的malloc函數(使用malloc正確)
- 16. 使用malloc
- 17. 從使用malloc
- 18. 使用malloc
- 19. 使用malloc
- 20. 使用malloc()
- 21. 定製malloc中的無限循環()
- 22. malloc內存無法訪問外循環
- 23. 在無限循環中運行malloc()
- 24. Malloc在循環導致內存泄漏
- 25. 如何跨越的malloc循環? (opencv)
- 26. 不常見的使用malloc
- 27. malloc提供什麼保證低階位?
- 28. malloc的與結構
- 29. 我們必須malloc一個結構嗎?
- 30. 這是malloc第二個結構嗎?
爲什麼'malloc'突然成功,當它再次失敗後再試一次? –
看起來很拗口。一方面,它期望malloc最終會成功。也許這是一個合理的期望,也許不是。 –
也許吧。你可能會導致競賽狀況。也許限制它一定的時間,或者編寫你自己的malloc函數,它調用malloc並且只嘗試100次。 –