malloc()這個函式括號里開辟空間大小的意義是什么,會影響程式哪里出問題,為什么我無論在括號里輸多大的數,輸出的結果都一樣,都會輸出10個亂數。我想問一下大佬,能不能解釋一下,用malloc 動態開辟的空間用哪去了,怎么用的。
(我菜所以虛心請教大佬們)
uj5u.com熱心網友回復:
輸出是個亂數只是僥幸而已,你只開4個int的空間,只能存4個,其他的6個不過是正好排在你開辟的空間的后面,i[j]其實是*(i+j),正好給你取到了,但這樣無疑是不安全的uj5u.com熱心網友回復:
之所以排在后面,是因為你使用的賦值是i[j],但如果這部分空間被別的行程占用,那么程式就進行不下去了,所以為了安全考慮,必須開辟足夠大的空間uj5u.com熱心網友回復:
你這個只是申請了4個位元組的記憶體空間,i指向了這塊記憶體空間,程式沒錯,是因為這塊記憶體空間后面的記憶體沒有被其他程式占用,所以程式僥幸能運行正常做法都是用多少記憶體就申請多少記憶體
i = (int*)malloc(10*sizeof(int)); //10個int大小的空間
uj5u.com熱心網友回復:
malloc是在堆上申請記憶體空間,需要需要分配足夠的長度
malloc(4)也就4個位元組,后面的賦值和操作都越界了。
uj5u.com熱心網友回復:
懂了懂了懂了懂了謝謝大家轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/148849.html
標籤:C語言
下一篇:哪個兄弟會!!!跪求
