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

C/C++: Inline function, calloc 對比 malloc

 更新時間:2016年07月06日 17:50:31   投稿:lqh  
以下是對c/c++中的malloc函數(shù)與calloc函數(shù)的區(qū)別以及它們之間的聯(lián)系進(jìn)行了介紹,需要的朋友可以過來參考下

Inline function is like a macro definition. When it was be called in another function, the control right will not be changed to this function. The compiler will just replace the line of inline function with the actual content of the function. We use inline function to eliminate the cost of calling a function.

內(nèi)聯(lián)函數(shù)從源代碼層看,有函數(shù)的結(jié)構(gòu),而在編譯后,卻不具備函數(shù)的性質(zhì)。內(nèi)聯(lián)函數(shù)不是在調(diào)用時發(fā)生控制轉(zhuǎn)移,而是在編譯時將函數(shù)體嵌入在每一個調(diào)用處。編譯時,類似宏替換,使用函數(shù)體替換調(diào)用處的函數(shù)名。內(nèi)聯(lián)擴(kuò)展是用來消除函數(shù)調(diào)用時的時間開銷。它通常用于頻繁執(zhí)行的函數(shù)。 一個小內(nèi)存空間的函數(shù)非常受益。

帶參數(shù)的宏定義的一般形式如下:

#define <宏名>(<參數(shù)表>) <宏體>

 其中, <宏名>是一個標(biāo)識符,<參數(shù)表>中的參數(shù)可以是一個,也可以是多個,視具體情況而定,當(dāng)有多個參數(shù)的時候,每個參數(shù)之間用逗號分隔。<宏體>是被替換用的字符串,宏體中的字符串是由參數(shù)表中的各個參數(shù)組成的表達(dá)式。

#define SUB(a,b) a-b

 如果在程序中出現(xiàn)如下語句:

result=SUB(2, 3);

 則被替換為:

result=2-3;

calloc與malloc的區(qū)別:

calloc在動態(tài)分配完內(nèi)存后,自動初始化該內(nèi)存空間為零,而malloc不初始化,里邊數(shù)據(jù)是隨機(jī)的垃圾數(shù)據(jù)。

用法:

void *calloc(size_t n, size_t size);

一般使用后要使用 free(起始地址的指針) 對內(nèi)存進(jìn)行釋放,不然內(nèi)存申請過多會影響計算機(jī)的性能,以至于得重啟電腦。如果使用過后不清零,還可以使用指針對該塊內(nèi)存進(jìn)行訪問.

相關(guān)文章

  • C/C++實(shí)現(xiàn)segy文件的讀取詳解

    C/C++實(shí)現(xiàn)segy文件的讀取詳解

    SEGY是地震數(shù)據(jù)一般以地震道為單位進(jìn)行組織,采用SEG-Y文件格式存儲。標(biāo)準(zhǔn)SEGY文件一般包括三部分:卷頭、道頭與地震道數(shù)據(jù)。本文將介紹利用C++讀取segy文件的方法,感興趣的可以了解一下
    2022-03-03
  • C++保存HBITMAP為位圖文件的實(shí)現(xiàn)方法

    C++保存HBITMAP為位圖文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++保存HBITMAP為位圖文件的實(shí)現(xiàn)方法,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2021-01-01
  • C++中的頭文件與Extern(外部函數(shù)調(diào)用)方式

    C++中的頭文件與Extern(外部函數(shù)調(diào)用)方式

    這篇文章主要介紹了C++中的頭文件與Extern(外部函數(shù)調(diào)用)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例

    Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例

    本文主要介紹了Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 關(guān)于函數(shù)傳參問題(指針傳參,值傳參,引用傳參)

    關(guān)于函數(shù)傳參問題(指針傳參,值傳參,引用傳參)

    這篇文章主要介紹了關(guān)于函數(shù)傳參問題(指針傳參,值傳參,引用傳參),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C++編程之?std::forward使用例子

    C++編程之?std::forward使用例子

    std::forward?是一個?C++11?中的模板函數(shù),其主要作用是在模板函數(shù)或模板類中,將一個參數(shù)以“原樣”(forward)的方式轉(zhuǎn)發(fā)給另一個函數(shù),這篇文章主要介紹了C++編程之?std::forward,需要的朋友可以參考下
    2023-03-03
  • 函數(shù)式宏定義與普通函數(shù)的區(qū)別

    函數(shù)式宏定義與普通函數(shù)的區(qū)別

    盡管函數(shù)式宏定義和普通函數(shù)相比有很多缺點(diǎn),但只要小心使用還是會顯著提高代碼的執(zhí)行效率,畢竟省去了分配和釋放棧幀、傳參、傳返回值等一系列工作,因此那些簡短并且被頻繁調(diào)用的函數(shù)經(jīng)常用函數(shù)式宏定義來代替實(shí)現(xiàn)
    2013-10-10
  • C++實(shí)現(xiàn)LeetCode(127.詞語階梯)

    C++實(shí)現(xiàn)LeetCode(127.詞語階梯)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(127.詞語階梯),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中的delete不會將操作數(shù)置0

    C++中的delete不會將操作數(shù)置0

    這篇文章主要介紹了C++中的delete不會將操作數(shù)置0的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 如何用C語言去除字符串兩邊的空字符

    如何用C語言去除字符串兩邊的空字符

    本篇文章是對用C語言去除字符串兩邊空字符的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論