A. 數組最多能開多大
一般這個問題只與操作系統有關,當然編譯系統要是相關操作系統下的。
在完美32位環境,只要你整個程序的內存不超過2^32位元組都可以,你的數組只要幾M內存,很容易就能實現。
幾乎任何語言都支持。不過那些DOS時代的TURBO PASCAL就不行了哦,它們有64K內存限制,單個變數不能那麼大的。當然也有辦法解決,就是使用鏈表,可以不斷分配空間,直到640K基本內存使用完畢。
遇到這類問題,你可以自己測試一下,寫個簡短程序,FOR循環給數組賦值,再FOR一下求個和。
B. c語言數組在內存中是怎麼分配的
使用C語言編程,實際上使用的內存只有一種虛擬內存。根據功能的不同在C語言中又將虛擬內存為分三類:棧區、堆區、靜態數據區,無論單一變數還是數組,其內存分配都是如此;
1、棧區:一般每一個函數對應一個棧區,在編譯原理中稱為棧幀;
2、靜態數據區:這實際上對應於生成的可執行文件的data區段,因為這個區段在生成的可執行文件中,因此是「靜態的」;
3、堆區:堆區是最復雜的,有操作系統負責堆管理,但是當用C語言編譯器生成一個可執行文件並且運行時,它會默認建立一些堆。