女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

周立功:動態分布內存——malloc()函數與calloc()函數

AGk5_ZLG_zhiyua ? 來源:互聯網 ? 作者:佚名 ? 2017-08-22 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

周立功教授數年之心血之作《程序設計與數據結構》,電子版已無償性分享到電子工程師與高校群體,在公眾號回復【程序設計】即可在線閱讀。書本內容公開后,在電子行業掀起一片學習熱潮。經周立功教授授權,本公眾號特對本書內容進行連載,愿共勉之。

第一章為程序設計基礎,本文為1.9.1 malloc()函數和1.9.2 calloc()函數。

》》》》 1.9 動態分配內存

首先回顧一下內存分配,所有程序都必須預留足夠的內存存儲程序使用的數據,這些內存中有些是自動分配的。比如,聲明“int iNum;”為一個int類型的值預留了足夠的內存,或顯式指定分配一定數量的內存,“int pData[20];”聲明預留了20個內存位置,每個位置存儲的是int類型的值。聲明還為內存提供了標識符,因此可以使用iNum或pData識別數據。靜態數據在程序載入內存時分配的,自動數據是在程序執行時分配的,并在程序離開時銷毀。但C能做的遠不止這些,可以在程序運行時請求所需要的內存大小。

程序在運行時分配的內存空間稱之為“堆”的存儲池,雖然計算機在硬件上不直接支持堆,但C函數庫(stdlib.h)分別提供了用于動態內存分配和釋放的函數malloc()和free(),即在運行時根據需要創建一個存儲單元,在不需要時釋放。

》》》 1.9.1 malloc()函數

malloc()函數原型如下:

void *malloc(unsigned int size);

其中,void *表示該函數是指針函數,size為所需內存的字節數,可以用sizeof運算符計算每個元素所需要的空間數量和所有元素需要內存的字節數。如果分配成功,雖然malloc()不會為分配的內存賦名,但它確實返回了動態分配內存塊的首字節地址。因此可以將該地址賦給一個指針變量,并使用指針變量訪問這塊內存。如果分配不成功或內存不足,則返回空指針NULL。因此在使用它返回的指針之前,一定要先檢查返回值,否則可能會導致程序非正常終止。比如:

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

if(pi != NULL){

// 指針沒有問題

}else{

// 無效的指針

}

malloc()函數可用于返回指向數組的指針、指向結構的指針等,所以通常該函數的返回值會被強制轉換為匹配的類型,但從C99版本開始,void *類型的指針不需要強制轉換地賦給所有的指針類型變量。

當編寫程序時,常常很難為數組估計合適的大小,較為方便的做法是等到程序運行時,再來確定數組的實際大小。其方法是用malloc()在程序執行期間為數組分配空間,然后通過指向數組第一個元素的指針訪問數組。假設正在編寫的程序需要n個整數構成的數組,這里的n可以在程序執行期間計算出來。首先需要聲明指針變量:

int * pi, n;

一旦n的值已知,就讓程序調用malloc()函數為數組分配存儲空間:

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

if(pi == NULL) return -1;

當pi指向分配動態分配的內存塊時,就可以忽略pi是指針的事實,將它作為數組名使用,這是C語言數組和指針形成緊密關系的所帶來的便利。由于數組名是該數組首元素的地址,如果讓pi指向這個塊的首元素,便可以象使用數組名一樣使用它。即可以使用pi[0]訪問該塊的首元素,pi[1]訪問第2個元素,以此類推。比如,使用下列循環對pi指向的數組進行初始化:

for(i = 0; i 《 n; i++) pi[i] = 0;

動態內存分配可以提供更多的靈活性,比如:

char *pcStr;

char *pcStr = malloc(strlen(“OK!”) + 1);

strcpy(pcStr, “OK!”);

在這里,使用strlen()計算字符串的長度,一定要記得加上結束符NUL。為何不用sizeof呢?因為szieof會返回數組和指針的長度,而不是字符串的長度。

》》》 1.9.2 calloc()函數

雖然可以用malloc()函數為數組分配內存,但C語言提供了一種更好用的calloc()函數,其函數原型如下:

void *calloc(size_t nmenb, size_t size);

calloc()函數為nmemb個元素的數組分配內存空間,其中,每個元素的長度都是size個字節。如果要求的空間無效,那么此函數返回指針。在分配了內存之后,calloc()函數會通過將所有位設置為0的方式進行初始化。比如,調用calloc()函數為n個整數的數組分配存儲空間,且保證所有整數初始化為0。比如:

pi = calloc(n, sizeof(int));

因為calloc()函數會清楚分配的內存,而malloc()函數不會,所以可以調用以“1”作為第一個實參的calloc()函數,為任何類型的數據項分配空間。比如:

struct point{ int x, y;} *pi;

pi = calloc(1, sizeof(struct point));

在執行此語句后,pi將指向一個結構體,且此結構體的成員x和y都會被設為0。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 周立功
    +關注

    關注

    38

    文章

    130

    瀏覽量

    38188
  • 大數據
    +關注

    關注

    64

    文章

    8957

    瀏覽量

    140000
  • malloc
    +關注

    關注

    0

    文章

    53

    瀏覽量

    215

原文標題:周立功:動態分布內存——malloc()函數與calloc()函數

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數與變量內存布局優化精控方法

    函數和變量指定section放置方法與操作流程,兼具過程記錄與詳細說明,旨在打造一份實用的參考指南,助力開發者精準掌控程序的內存分布與執行邏輯。文檔涵蓋從默認section表的介紹,到多種放置手段的闡釋,以及實際配置示例的展示
    的頭像 發表于 04-30 16:38 ?267次閱讀
    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件<b class='flag-5'>函數</b>與變量<b class='flag-5'>內存</b>布局優化精控方法

    函數指針的六個常見應用場景

    函數指針在嵌入式開發中有著廣泛的應用,它讓代碼更加靈活,減少冗余,提高可擴展性。很多時候,我們需要根據不同的情況動態調用不同的函數,而函數指針正是實現這一需求的重要工具。本文將介紹六個
    的頭像 發表于 04-07 11:58 ?458次閱讀
    <b class='flag-5'>函數</b>指針的六個常見應用場景

    詳解RTOS中的Hook函數

    Hook函數是RTOS中的一個關鍵特性,通過該函數,用戶可以增強對任務管理的控制,定義系統行為。
    的頭像 發表于 03-24 16:14 ?368次閱讀

    西門子TIA Portal中函數FC和函數塊FB的相互轉換

    描述 本文將介紹在西門子 TIA Portal 中使用 Add-In 插件實現函數 FC 和函數塊 FB 的相互轉換的方法和步驟。 第1步: 添加 PLC 設備。 選擇西門子 CPU 1214C
    的頭像 發表于 01-15 10:07 ?1876次閱讀
    西門子TIA Portal中<b class='flag-5'>函數</b>FC和<b class='flag-5'>函數</b>塊FB的相互轉換

    RNN的損失函數與優化算法解析

    函數有以下幾種: 交叉熵損失函數 :交叉熵(Cross Entropy)是一種評估兩個概率分布之間差異的度量方法,即通過比較模型預測的概率分布和真實概率
    的頭像 發表于 11-15 10:16 ?1362次閱讀

    如何優化SUMIF函數的效率

    在Excel中, SUMIF 函數是一個非常有用的工具,它可以根據指定的條件對數據進行求和。然而,在處理大量數據時, SUMIF 函數可能會變得效率低下。以下是一些優化 SUMIF 函數效率的方法
    的頭像 發表于 11-11 09:20 ?1287次閱讀

    SUMIF函數對比VLOOKUP的優勢

    在Excel中,數據管理和分析是日常工作中不可或缺的一部分。SUMIF函數和VLOOKUP函數是兩個非常受歡迎的函數,它們可以幫助用戶快速地處理和分析數據。盡管它們都可以用于查找和匯總數據,但它們在
    的頭像 發表于 11-11 09:16 ?1195次閱讀

    SUMIF函數與SUMIFS函數的區別

    SUMIF函數和SUMIFS函數都是Excel中用于條件求和的函數,它們可以幫助用戶根據特定的條件對數據進行求和。盡管它們的基本功能相似,但在使用場景和功能上存在一些差異。以下是對這兩個函數
    的頭像 發表于 10-30 09:51 ?7364次閱讀

    SUMIF函數使用教程

    SUMIF函數是Excel中非常實用的函數之一,能夠根據指定條件對數據進行篩選和求和操作。以下是對SUMIF函數使用方法的詳細教程: 一、基本語法 SUMIF函數的基本語法為: =SU
    的頭像 發表于 10-30 09:50 ?2272次閱讀

    RTOS中鉤子函數的用途及用法

    在很多操作系統中,都存在這樣一類API函數接口:HOOK函數(也叫鉤子函數)。
    的頭像 發表于 10-23 16:25 ?762次閱讀
    RTOS中鉤子<b class='flag-5'>函數</b>的用途及用法

    如何由系統函數求頻率響應

    頻率響應函數表征了測試系統對給定頻率下的穩態輸出與輸入的關系,可以通過系統函數(或稱為傳遞函數)來求解。以下是由系統函數求頻率響應的步驟: 一、理解系統
    的頭像 發表于 10-18 09:32 ?3465次閱讀

    什么叫系統的頻率響應函數?它和傳遞函數有何關系

    系統的頻率響應函數(Frequency Response Function, FRF)是描述線性時不變(Linear Time-Invariant, LTI)系統在不同頻率下輸入和輸出之間關系的數學
    的頭像 發表于 10-18 09:29 ?4694次閱讀

    內存管理的硬件結構

    常見的內存分配函數malloc,mmap等,但大家有沒有想過,這些函數在內核中是怎么實現的?換句話說,Linux內核的內存管理是怎么實現的
    的頭像 發表于 09-04 14:28 ?644次閱讀
    <b class='flag-5'>內存</b>管理的硬件結構

    面試???1:函數指針與指針函數、數組指針與指針數組

    在嵌入式開發領域,函數指針、指針函數、數組指針和指針數組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率和質量至關重要。一、指針函數函數指針指針
    的頭像 發表于 08-10 08:11 ?1442次閱讀
    面試???1:<b class='flag-5'>函數</b>指針與指針<b class='flag-5'>函數</b>、數組指針與指針數組

    使用system_show_malloc()檢查內存泄漏遇到異常怎么解決?

    我想使用system_show_malloc()檢查內存泄漏,但是當我調用該函數時,我得到了致命的異常: 致命異常 28 (LoadProhibitedCause): epc1
    發表于 07-10 06:32
    主站蜘蛛池模板: 延津县| 东台市| 伊春市| 清水县| 衡山县| 通州市| 鄂州市| 克拉玛依市| 涡阳县| 临武县| 大埔县| 南雄市| 武强县| 敦化市| 神农架林区| 汕尾市| 偃师市| 三门县| 丹阳市| 大名县| 寻甸| 乐亭县| SHOW| 米泉市| 鲁甸县| 龙游县| 龙江县| 海原县| 桂阳县| 康平县| 福海县| 安顺市| 南澳县| 榆社县| 广西| 平罗县| 枣阳市| 扎兰屯市| 泊头市| 民丰县| 漳州市|