c陣列長度問題

2022-11-14 22:42:29 字數 891 閱讀 5009

1樓:匿名使用者

樓主~~~首先我不知道你用的是什麼環境,我用的是win7 + vs2008

long a[256000]=;

很明顯你定義 a 陣列時候已出了。把陣列的長度定義小一點就可以通過了。

vc 的堆疊大小預設是 1m, 不過可以在編譯選項中設定。

你的陣列肯定超1m棧空間.執行時棧溢位!(因為你定義的是區域性變數,在棧裡分配空間)

定義 可以如下

int   a[n];   //n   <   1*1024*1024/sizeof(int)

但是實際中你會發現編譯器是不會給那麼大的空間你的(跟系統+編譯器有密切關係)

上限在 1024*128-1024*256 之間。

2樓:匿名使用者

棧的空間是很有限的, 而且不會自動增長, 這麼大的陣列是沒戲的

3樓:鬼谷子

你用什麼執行出錯啊?我用vc6.0執行很正常

陣列前五位數有定義,第101個數自然被初始化為0了。

不知道回答滿意嗎

4樓:柔鵾厚成仁

其實這種問題你可以翻翻權威書籍的。如k&rc形參int

a這麼寫和int

*a這麼寫,是等價的,一般想要不損失長度資訊,把長度這個資訊用整數作為第二個引數傳進去。

動態陣列是以像b這樣的指標形式存在的,sizeof這個操作符是編譯時的取長度操作符,

動態陣列是執行時的,所以一樣,sizeof(b)=4。

動態陣列的長度一般是要自己維護的,你只是維護一個b,你是沒辦法通過b獲得長度資訊的。

有問題可以追問。

5樓:匿名使用者

編譯器的堆疊分配問題,更改編譯器設定!

C 動態增加陣列長度,c 動態定義陣列長度

1.你可以設立一個指標intpointer 指標和陣列本來就是一家人 int intpointer 然後當取得了i的值後用 intpointer int malloc i sizeof int int main 用new 陣列長度給定後。如果想增加。只能重新分配空間。儲存元素,然後在進行刪除 用re...

陣列長度和字串長度

你記bai住兩點 1.c風格字元du串只要是使用雙引號 半zhi角 的,都會以 0結束dao,就是說會多出版一個字元。權2.凡是陣列沒有指名大小的定義,全部都會以賦值號右邊的初始化長度作為陣列預設大小。那麼你的問題解答如下 字串 abcd 長度為4,是因為字串長度指的是字串中有效字元的個數,不包含c...

C 如何定義長度超過一百萬的陣列

你這個陣列申明在函式內部,屬於區域性變數,存放在了棧上,看看陣列佔用的記憶體大小 1000000 1000 1000然後乘以int型資料長度 1000 1000 4byte約等於4m,而棧的預設記憶體空間為1m左右,所以會導致記憶體溢位解決這個問題,可以將陣列申明在全域性儲存區或堆上即可方法一 申明...