簡體   English   中英

gzopen()導致ENOMEM的原因

[英]Causes of gzopen() leading to ENOMEM

我有一個程序,其總內存占用量約為100 MiB(VM大小,頂部,而在gdb停止),試圖使用gzopen打開新的(尚不存在)壓縮日志文件。 盡管將errno設置為ENOMEM ,但這仍然失敗,盡管該系統具有6GB的完全可用內存(甚至不保存緩存),並且在文件系統上有很多空間(我知道這是ENOSPC )。 是否還有其他可能導致此問題的晦澀問題? 庫中是否有某些東西無緣無故地在GB的內存上分配了GB?

請注意,我的ulimit設置為無限制。

不,zlib中沒有什么可以分配超過一兩個MiB的。 zlib只會將errno設置為零。 它自己不會將errno設置為ENOMEM。 它可能調用的庫函數。 您正在使用哪個版本的zlib?

事實證明zlib沒有返回ENOMEM 它之所以失敗,是因為我們給它傳遞了模式參數w+ ,這是無效的,因為它無法同時讀寫給定的gzip文件。 ENOMEM來自之前的庫/系統調用中坐在errno

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM