回覆列表
  • 1 # 佛祖開始啦哦嗚

    malloc是C語言的動態記憶體分配函式,宣告與malloc.h。由於stdlib.h中引用了malloc.h,所以在程式碼中引用malloc.h或stdlib.h均可。宣告形式為void*malloc(intsize);功能為申請一段長度為size位元組的記憶體,並將記憶體的首地址返回,該返回值一般儲存在指標變數中。後續對指標按照偏移量訪問,可以實現訪問對應元素的效果。而在C語言中,訪問指標時,並不會對偏移量是否合法做判斷,這樣在程式設計不嚴謹甚至錯誤時,就有可能訪問超出合法範圍的元素。比如申請了100個位元組的空間,卻訪問了第101個位元組,這種超出合法範圍的訪問就稱為記憶體溢位。由於記憶體是動態分配的,所以無法預知溢位部分記憶體是何種作用,所以記憶體溢位會導致不可預知的後果,可能是某個運算出錯,甚至整個程式崩潰,同樣也可能出現完全沒有影響。由於記憶體溢位的不確定性,現象也多種多樣,導致記憶體溢位後,程式問題點定位和修改均很繁瑣,所以最好的方法是在程式碼構建階段著重注意記憶體訪問的限制,確保不會出現溢位。

  • 中秋節和大豐收的關聯?
  • 純棉衣服洗多次還掉毛?