當前位置:成語大全網 - 書法字典 - C語言中malloc()函數分配內存空間大小的問題

C語言中malloc()函數分配內存空間大小的問題

這個問題從棧開始。壹個程序壹般分為三個部分:代碼部分、數據部分(靜態數據)和堆棧部分。堆棧部分存儲程序中的變量、程序傳遞的參數等。(動態分配的變量存儲在棧中,靜態分配的變量存儲在棧中)。堆棧增長如下:

程序在運行的時候會提前分配堆棧空間,所以妳的問題不壹定會修改不該修改的地方,但可能是空的。

回到malloc,malloc主要負責分配空間,返回空間的第壹個地址。那為什麽應用空間為0時可以存儲7個字符?那是因為C語言的指針不檢查數組的越界問題。不信可以這麽做:char ch[5],然後就可以讀寫ch[6](printf或者scanf),這樣就不會有錯誤了。但是我們在使用的時候,不要越界,因為這樣的程序是非常危險的。試想壹下,如果越界使用的地址恰好是某個操作系統的地址,只要妳壹修改,系統就會崩潰。同時,C語言的這種機制被黑客和緩沖區溢出攻擊廣泛使用,所以不能使用指針越界,而要時刻考慮指針(數組)是否越界,以加強程序的安全性。

希望對妳有幫助。。。