歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C內存管理函數

C內存管理函數

日期:2017/3/1 9:52:03   编辑:Linux編程

1. malloc 分配一段內存空間
定義函數:void *malloc(size_t size);
函數說明:malloc()用來配置內存空間, 其大小由指定的size 決定.
返回值:若配置成功則返回一指針, 失敗則返回NULL.

2. calloc
定義函數:void *calloc(size_t nmemb, size_t size);
函數說明:calloc()用來配置nmemb個相鄰的內存單位, 每一單位的大小為size, 並返回指向第一個元素的指針.這和使用下列的方式效果相同:malloc(nmemb*size);不過, 在利用calloc()配置內存時會將內存內容初始化為0.
返回值:若配置成功則返回一指針, 失敗則返回NULL.

3. free
定義函數:void free(void *ptr);
函數說明:
參數 ptr 為指向先前由malloc()、calloc()或realloc()所返回的內存指針. 調用free()後ptr所指的內存空間便會被收回. 假若參數ptr 所指的內存空間已被收回或是未知的內存地址, 則調用free()可能會有無法預期的情況發生. 若參數ptr 為NULL, 則free()不會有任何作用.

4. memset 內存填入函數
定義函數:void * memset(void *s, int c, size_t n);
函數說明:memset()會將參數s 所指的內存區域前n 個字節以參數c 填入, 然後返回指向s 的指針. 在編寫程序時, 若需要將某一數組作初始化, memset()會相當方便.
返回值:返回指向s 的指針.
附加說明:參數 c 雖聲明為int, 但必須是unsigned char, 所以范圍在0 到255 之間.

5. memcpy 內存復制函數
定義函數:void * memcpy (void * dest, const void *src, size_t n);
函數說明:memcpy()用來拷貝src 所指的內存內容前n 個字節到dest 所指的內存地址上. 與strcpy()不同的是, memcpy()會完整的復制n 個字節, 不會因為遇到字符串結束'\0'而結束.
返回值:返回指向dest 的指針.
附加說明:指針 src 和dest 所指的內存區域不可重疊.

6. memmove 內存復制函數
定義函數:void * memmove(void *dest, const void *src, size_t n);
函數說明:memmove()與memcpy()一樣都是用來拷貝src 所指的內存內容前n 個字節到dest 所指的地址上. 不同的是, 當src 和dest 所指的內存區域重疊時, memmove()仍然可以正確的處理, 不過執行效率上會比使用memcpy()略慢些.
返回值:返回指向dest 的指針.

7. memcmp 內存比較函數
定義函數:int memcmp (const void *s1, const void *s2, size_t n);
函數說明:
memcmp()用來比較s1 和s2 所指的內存區間前n 個字符. 字符串大小的比較是以ASCII 碼表上的順序來決定, 次順序亦為字符的值. memcmp()首先將s1 第一個字符值減去s2 第一個字符的值, 若差為0 則再繼續比較下個字符, 若差值不為0 則將差值返回. 例如, 字符串"Ac"和"ba"比較則會返回字符'A'(65)和'b'(98)的差值(-33).
返回值:若參數s1 和s2 所指的內存內容都完全相同則返回0 值. s1 若大於s2 則返回大於0 的值. s1 若小於s2 則返回小於0 的值.

8. memchr 在內存中查找特定字符
定義函數:void * memchr(const void *s, int c, size_t n);
函數說明:memchr()從頭開始搜尋s 所指的內存內容前n 個字節, 直到發現第一個值為c 的字節, 則返回指向該字節的指針.
返回值:如果找到指定的字節則返回該字節的指針, 否則返回0.

9. memccpy 復制內存中的內容
定義函數:void * memccpy(void *dest, const void * src, int c, size_t n);
函數說明:memccpy()用來拷貝src 所指的內存內容前n 個字節到dest 所指的地址上. 與memcpy()不同的是,memccpy()會在復制時檢查參數c 是否出現, 若是則返回dest 中值為c 的下一個字節地址.
返回值:返回指向dest 中值為c 的下一個字節指針. 返回值為0 表示在src 所指內存前n 個字節中沒有值為c的字節.

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/91621p2.htm

Copyright © Linux教程網 All Rights Reserved