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左右,所以會導致記憶體溢位解決這個問題,可以將陣列申明在全域性儲存區或堆上即可方法一 申明...