[英]Is this is correct about malloc() and calloc()?
我已經研究了所有可能的方法,但我很難消化這樣一個事實,即malloc即malloc(sizeof(10))
和calloc即calloc(2,sizeof(5))
分配相同的連續內存,忽略其他事實calloc初始化為零,並且工作速度比malloc慢。 所以這就是我的想法。
我認為在32位系統上,如果我們調用malloc並說malloc(sizeof(10))
那么malloc將進入堆並分配12個字節的內存,因為對於32位系統,內存包是按組排列的4個字節,所以分配10個字節需要3個塊,在最后一個塊中填充2個字節。
類似地,如果我們調用calloc並說calloc(2,sizeof(5))
那么它將分配2個塊,每個塊大小為8個字節,總共16個字節,因為由於相同的原因,內存在4個字節的包中並且分配5個字節使用兩個4字節的塊,並且在一個塊中將提供3個字節的填充。
所以這就是我對malloc和calloc的看法。 我可能是對或錯但請告訴我。
使用這兩種方法時所獲得的至少是您請求的內存量。 它可以更多。 一個原因可能是你提到的那個。 另一個原因可能是你得到一個更大的塊,以防萬一你想稍后改變它。
沒有辦法確切地說你有多少。 只有你至少保證你所要求的,如果你沒有,你將獲得一個空指針。
不過請注意,用得到我的意思是,你得到你問什么,你就別想指望不止於此。 這將是未定義的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.