malloc函數分配內存失敗的常見原因


malloc()函數分配內存失敗的常見原因: 
1. 內存不足。 
2. 在前面的程序中出現了內存的越界訪問,導致malloc()分配函數所涉及的一些信息被破壞。下次再使用malloc()函數申請內存就會失敗,返回空指針NULL(0)。


malloc中做了哪些事情: 

簡單的說就是系統中有一個位置標記,標記了 當前已經用掉的內存用到了什么位置,系統中還有一個鏈表把各個未用的內存塊連接起來,申請新內存的時候就未分配的鏈表中依次查找一個夠用的內存塊,把這次分配的內存地址返回給用戶,把這次用掉的進行映射,未分配的部分返回給鏈表,如果沒有合適大小的內存,還需要先進行內存整理合並。

詳細情況看到這個博客寫的不錯:https://blog.csdn.net/mmshixing/article/details/51679571


查看方式:

1、內存不足,使用free命令查看當前還有多少內存,看是否合理,之前是否有內存泄漏等。

2、按照流程查看malloc失敗前的幾次malloc、memcpy或字符串拷貝等,查看是否有內存越界。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM