函數插入是將對動態庫中函數的調用替換爲對用戶定義的包裝器的調用的概念。編程
咱們能夠計算函數調用的次數。安全
存儲調用者的信息和傳遞給函數的參數以跟蹤使用狀況。微信
檢測內存泄漏,咱們能夠覆蓋malloc()並跟蹤分配的空間。函數
咱們能夠添加本身的安全策略。例如,咱們能夠添加一個策略,即不能以超過指定的遞歸深度調用fork。學習
任務是編寫咱們本身的malloc()並確保在庫malloc()的位置調用了咱們本身的malloc()。下面是一個驅動程序,用於測試malloc()的不一樣類型的插入。測試
一、編譯時間:編譯源代碼時,用咱們本身的函數替換庫調用。3d
在Linux上執行上述步驟:視頻
二、連接時間:將可重定位目標文件靜態連接以造成可執行目標文件時。blog
在Linux上執行上述步驟:教程
三、加載/運行時間:將可執行目標文件加載到內存中,進行動態連接,而後執行。
環境變量LD_PRELOAD爲加載程序提供了要在命令或可執行文件以前加載的庫列表。
咱們建立一個動態庫,並確保在咱們的hello.c可執行文件以前加載了它。
在Linux上執行上述步驟:
用戶定義的malloc的代碼應保持較小,以提升可讀性。理想狀況下,它應該經過調用庫malloc()來分配內存。
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ羣1030652847【點擊進入】微信公衆號:C語言編程學習基地
編程學習書籍分享:
編程學習視頻分享: