第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

malloc和calloc的區(qū)別?

malloc和calloc的區(qū)別?

C
富國滬深 2019-06-25 11:20:14
malloc和calloc的區(qū)別?這樣做有什么區(qū)別:ptr = (char **) malloc (MAXELEMS * sizeof(char *));或:ptr = (char **) calloc (MAXELEMS, sizeof(char*));什么時候?qū)alloc使用calloc是個好主意,反之亦然?
查看完整描述

3 回答

?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

calloc()零初始化緩沖區(qū),同時malloc()內(nèi)存未初始化。

編輯:

將內(nèi)存歸零可能需要一些時間,所以您可能要使用malloc()如果表演是個問題的話。如果初始化內(nèi)存更重要,請使用calloc()..例如,calloc()可能會給你留個電話memset().


查看完整回答
反對 回復(fù) 2019-06-25
?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

一個鮮為人知的區(qū)別是,在具有樂觀內(nèi)存分配(如linux)的操作系統(tǒng)中,malloc在程序真正接觸到它之前不會有真正的內(nèi)存支持。

calloc確實會觸摸內(nèi)存(它會在內(nèi)存上寫入零),因此您將確保操作系統(tǒng)使用實際的RAM(或交換)支持分配。這也是為什么它比malloc慢的原因(它不僅必須使其為零,操作系統(tǒng)還必須通過可能交換其他進程來找到合適的內(nèi)存區(qū)域)。

例如見這個問題進一步探討malloc的行為


查看完整回答
反對 回復(fù) 2019-06-25
?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

一個經(jīng)常被忽視的優(yōu)點calloc它將有助于保護您免受整數(shù)溢出漏洞的影響。比較:

size_t count = get_int32(file);struct foo *bar = malloc(count * sizeof *bar);

v.V.

size_t count = get_int32(file);struct foo *bar = calloc(count, sizeof *bar);

前者可能導(dǎo)致微小的分配和隨后的緩沖區(qū)溢出,如果count大于SIZE_MAX/sizeof *bar..在這種情況下,后者將自動失敗,因為無法創(chuàng)建大型對象。

當(dāng)然,您可能需要注意不符合的實現(xiàn),這就忽略了溢出的可能性.如果這是您所針對的平臺上的問題,那么無論如何您都必須對溢出進行手動測試。


查看完整回答
反對 回復(fù) 2019-06-25
  • 3 回答
  • 0 關(guān)注
  • 710 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號