視頻課講稿-Linux應用程序編程基礎-內存管理和使用_第1頁
視頻課講稿-Linux應用程序編程基礎-內存管理和使用_第2頁
視頻課講稿-Linux應用程序編程基礎-內存管理和使用_第3頁
視頻課講稿-Linux應用程序編程基礎-內存管理和使用_第4頁
視頻課講稿-Linux應用程序編程基礎-內存管理和使用_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux應用程序編程基礎

——內存管理和使用本文檔內容節選自弓雷編著教材《ARM嵌入式Linux系統開發詳解(第2版)》,清華大學出版社.2014問題的引入

內存管理是計算機編程的一個重要部分。在目前的嵌入式系統中,資源仍然是有限的。在程序設計的時候,內存管理十分重要。C程序的內存管理靈活,接口簡單。本節首先講解Linux程序的基本結構,之后介紹C程序的內存管理函數,最后給出了C程序內存管理的實例。1堆和棧的區別

一個計算機應用程序在內存中可以分成兩個部分:存放代碼的代碼段和存放數據的數據段。代碼段存放用戶編寫的代碼;數據段可以分成堆和棧。棧棧(stack)是一個由編譯器分配釋放的區域,用來存放函數的參數、局部變量等。操作方式類似于數據結構教材里的棧。當調用函數時,被調用函數的參數和返回值被存儲到當前程序的棧區,之后被調用函數再為自身的自動變量和臨時變量在棧區上分配空間。當函數調用返回時,在棧區內的參數返回值、自動變量和臨時變量等會被釋放。這就是為什么C語言函數參數如果不是指針的話,被修改的參數結果用戶無法得到的原因。堆堆(heap)一般位于bss段和棧之間,用來動態分配內存。這段區域由程序員管理,程序員利用操作系統提供的分配和釋放函數使用堆區的內存。如果程序員在堆上分配了一段內存,卻沒有釋放,在目前主流的操作系統上,退出時會被操作系統釋放。2內存管理函數malloc()和free()C程序有兩個主要的內存管理函數:malloc()函數負責分配內存;free()函數釋放malloc()分配的內存。這兩個函數都是C標準庫stdlib.h頭文件定義的,Linux系統函數原型如下:void*malloc(size_tsize);voidfree(void*ptr);3實用的內存分配函數calloc()和realloc()在C程序開發項目中,還有兩個實用的內存分配函數:calloc()用來分配一塊新內存;realloc()用來改變一塊已經分配的內存大小。這兩個函數都是在C標準庫的stdlib.h頭文件中定義的。calloc()函數realloc()函數3實用的內存分配函數calloc()和realloc()1.calloc()函數calloc()函數用于向應用程序分配內存,定義如下:void*calloc(size_tnmemb,size_tsize);2.realloc()函數realloc()函數用于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論