C語言中malloc是動態(tài)內(nèi)存分配函數(shù)。
成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為察哈爾右翼后等服務(wù)建站,察哈爾右翼后等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為察哈爾右翼后企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
函數(shù)原型:void *malloc(unsigned int num_bytes)。
參數(shù):num_bytes 是無符號整型,用于表示分配的字節(jié)數(shù)。
注意:當內(nèi)存不再使用時,應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。函數(shù)返回的指針一定要適當對齊,使其可以用于任何數(shù)據(jù)對象。關(guān)于該函數(shù)的原型,在以前malloc返回的是char型指針,新的ANSIC標準規(guī)定,該函數(shù)返回為void型指針,因此必要時要進行類型轉(zhuǎn)換。
實現(xiàn)malloc的方法:
首先我們要確定所采用的數(shù)據(jù)結(jié)構(gòu)。一個簡單可行方案是將堆內(nèi)存空間以塊的形式組織起來,每個塊由meta區(qū)和數(shù)據(jù)區(qū)組成,meta區(qū)記錄數(shù)據(jù)塊的元信息(數(shù)據(jù)區(qū)大小、空閑標志位、指針等等)。
數(shù)據(jù)區(qū)是真實分配的內(nèi)存區(qū)域,并且數(shù)據(jù)區(qū)的第一個字節(jié)地址即為malloc返回的地址 。
這個宏的功能是整數(shù)提升,即將size提升為align定義的整數(shù)的倍數(shù)。例如:align=8,size=7,則這條宏運行的結(jié)果是8;align=8,size=13,則這條宏運行的結(jié)果是16。
有兩種方法可以做到:
1 用制表符\t實現(xiàn)對齊。
制表符\t輸出的時候,會移動輸出光標,實現(xiàn)對齊效果。所以可以在輸出的對應(yīng)位置,增加\t來實現(xiàn)對齊。
要求每行相同列輸出占用空間差別不可以太大。
2 在格式字符中加入占用寬度控制數(shù)字。
C語言使用printf輸出時,每個控制字符均可以寫成
%nC的形式,如%10d, %12f, %8c, %16s等等。
其效果就是輸出對應(yīng)變量時占用n個字符的寬度。不足部分左側(cè)補空格。通過這種方式,可以實現(xiàn)右對齊效果。
如果要實現(xiàn)做對齊效果,只需要在寬度字符前加-符號即可,如%-8s,就是把字符串輸出,占8位寬度,右側(cè)補空格。