欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言動態(tài)內存分配的詳解

 更新時間:2017年07月23日 09:56:55   投稿:lqh  
這篇文章主要介紹了C語言動態(tài)內存分配的詳解的相關資料,這里提供了實現方法整理和出現錯誤的解決辦法,需要的朋友可以參考下

C語言動態(tài)內存分配的詳解

1.為什么使用動態(tài)內存分配

數組在使用的時候可能造成內存浪費,使用動態(tài)內存分配可以解決這個問題。

2. malloc和free

C函數庫提供了兩個函數,malloc和free,分別用于執(zhí)行動態(tài)內存分配和釋放。

(1)void *malloc(size_t size);

malloc的參數就是需要分配的內存字節(jié)數。malloc分配一塊連續(xù)的內存。如果操作系統(tǒng)無法向malloc提供更多的內存,malloc就返回一個NULL指針。

(2)void free(void *pointer);

free的參數要么是NULL,要么是一個先前從malloc、calloc或realloc返回的值。

3. calloc和realloc

(1)void *calloc(size_t num_elements,size_t element_size);

calloc也用于內存分配。malloc和calloc之間的主要區(qū)別是后者在返回指向內存的指針之前把它初始化為0。

(2)realloc(void *ptr,size_t new_size);

realloc函數用于修改一個原先已經分配的內存塊的大小。如果它用于擴大一個內存,那么這塊內存原先的內容依然保留,新增加的內存添加到原先內存塊的后面。如果它用于縮小一個內存塊,該內存塊尾部的部分內存被拿掉,剩余部分內存的原先內容依然保留。

4. 使用動態(tài)分配的內存

(1)使用示例

int *pi;

pi = malloc(25 * sizeof(int));

if(pi == NULL){

printf("out of memery\n");

exit(1);

}

(2)使用間接訪問

int *pi2,i;

pi2 = pi;

for(i = 0;i < 25;i += 1)

*pi2++ = 0;

也可以使用下標。

int i;

for(i = 0;i < 25;i += 1)

*pi[i] = 0;

5. 常見的動態(tài)內存錯誤

常見的錯誤有:對NULL指針進行解引用操作、對分配的內存進行操作時越過邊界、釋放并非內存分配的內存、試圖釋放一塊動態(tài)分配的內存的一部分以及一塊動態(tài)內存釋放之后被繼續(xù)使用。

以上就是對C語言中動態(tài)內存分配的資料講解,如有疑問請大家留言或者到本站社區(qū)討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • 對比C語言中getc()函數和ungetc()函數的使用

    對比C語言中getc()函數和ungetc()函數的使用

    這篇文章主要介紹了對比C語言中getc()函數和ungetc()函數的使用,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • 使用CMake構建一個簡單的C++項目的實現

    使用CMake構建一個簡單的C++項目的實現

    CMake是一個跨平臺的自動化構建工具,可以用于構建各種類型的項目,本文主要介紹了使用CMake構建一個簡單的C++項目,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • C++小知識:不要去做編譯器的工作

    C++小知識:不要去做編譯器的工作

    今天小編就為大家分享一篇關于C++小知識:不要去做編譯器的工作,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Qt實現部件透明陰影效果與不規(guī)則窗體詳解

    Qt實現部件透明陰影效果與不規(guī)則窗體詳解

    這篇文章主要為大家詳細介紹了Qt實現部件透明陰影效果與不規(guī)則窗體的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-01-01
  • C++?超詳細分析多態(tài)的原理與實現

    C++?超詳細分析多態(tài)的原理與實現

    這篇文章主要介紹了C++多態(tài)的原理與實現,多態(tài)是一種面向對象的設計思路,本身和C++不是強綁定的,其他語言當中一樣有多態(tài),只不過實現的方式可能有所不同。下面來一起了解更多詳細內容吧
    2022-03-03
  • C語言入門篇--四大常量(字面,const修飾,宏,枚舉)及標識符

    C語言入門篇--四大常量(字面,const修飾,宏,枚舉)及標識符

    本篇文章是c語言基礎篇,主要講述一下常量,常量即不可被直接修改的量(const修飾的常變量可間接修改,后續(xù)文章會繼續(xù)說明)請大家持續(xù)關注腳本之家
    2021-08-08
  • VCPKG安裝和使用教程(經驗總結)

    VCPKG安裝和使用教程(經驗總結)

    這篇文章主要介紹了VCPKG安裝和使用教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • 在C++中加載TorchScript模型的方法

    在C++中加載TorchScript模型的方法

    這篇文章主要介紹了在C++中加載TorchScript模型的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • QT實現自定義Http客戶端的示例代碼

    QT實現自定義Http客戶端的示例代碼

    這篇文章主要為大家詳細介紹了QT如何實現自定義Http客戶端的,可以實現支持get,post請求方式;支持連接超時處理;支持網絡錯誤,嘗試重連等功能,感興趣的小伙伴可以學習一下
    2022-11-11
  • C++通過自定義函數找出一個整數數組中第二大數的方法

    C++通過自定義函數找出一個整數數組中第二大數的方法

    這篇文章主要介紹了C++通過自定義函數找出一個整數數組中第二大數的方法,涉及C++針對數組的遍歷操作相關技巧,需要的朋友可以參考下
    2015-06-06

最新評論