C/C++: Inline function, calloc 對比 malloc_C 語言

來源:互聯網
上載者:User

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.

內嵌函式從原始碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。內嵌函式不是在調用時發生控制轉移,而是在編譯時間將函數體嵌入在每一個調用處。編譯時間,類似宏替換,使用函數體替換調用處的函數名。內聯擴充是用來消除函數調用時的時間開銷。它通常用於頻繁執行的函數。 一個小記憶體空間的函數非常受益。

帶參數的宏定義的一般形式如下:

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

 其中, <宏名>是一個標識符,<參數表>中的參數可以是一個,也可以是多個,視具體情況而定,當有多個參數的時候,每個參數之間用逗號分隔。<宏體>是被替換用的字串,宏體中的字串是由參數表中的各個參數組成的運算式。

#define SUB(a,b) a-b

 如果在程式中出現如下語句:

result=SUB(2, 3);

 則被替換為:

result=2-3;

calloc與malloc的區別:

calloc在動態分配完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是隨機的垃圾資料。

用法:

void *calloc(size_t n, size_t size);

一般使用後要使用 free(起始地址的指標) 對記憶體進行釋放,不然記憶體申請過多會影響電腦的效能,以至於得重啟電腦。如果使用過後不清零,還可以使用指標對該塊記憶體進行訪問.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.