1樓:
你這個陣列申明在函式內部,屬於區域性變數,存放在了棧上,看看陣列佔用的記憶體大小:1000000=1000*1000然後乘以int型資料長度
1000*1000*4byte約等於4m,而棧的預設記憶體空間為1m左右,所以會導致記憶體溢位解決這個問題,可以將陣列申明在全域性儲存區或堆上即可方法一:申明為全域性變數
#include
#include
using namespace std;
int list[1000000];//全域性變數int main(){
int a,b;
cin>>a;
for(b=0;b>list[b];
sort(list,list+a);
for(b=0;b
方法二:存放在堆上
#include
#include
using namespace std;
int main(){
int a,b,*list;
//int list[1000000];
list = new int[1000000];//存放在堆上cin>>a;
for(b=0;b>list[b];
sort(list,list+a);
for(b=0;b
2樓:飛塵
陣列申明在函式內部,屬於區域性變數,存放在了棧上,看看陣列佔用的記憶體大小:1000000=1000*1000然後乘以int型資料長度
1000*1000*4byte約等於4m,而棧的預設記憶體空間為1m左右,所以會導致記憶體溢位解決這個問題,可以將陣列申明在全域性儲存區或堆上即可方法一:申明為全域性變數
方法二:存放在堆上
3樓:匿名使用者
100w *4 大概是4m的樣子.
函式內定義陣列,是在函式堆疊分配空間,一般函式堆疊限制了最大1m的樣子.
這個值我不確定,具體得查資料.
如果是這樣的話,4m的陣列是不可以直接定義的。
不過建立執行緒的時候,可以設定堆疊大小,可以試試直接設定函式堆疊大小沒用過,不知道是否可以.
其實你可以用malloc分配一塊同樣大小的記憶體,效果跟陣列一樣.
4樓:
調編譯器快取大小,或者往硬碟讀寫,或者對映。
5樓:匿名使用者
全域性變數陣列不會報錯
6樓:
分組 把100萬分為多組
c++裡怎麼定義一個不知道大小的陣列
7樓:
沒分也幫你,哥是好人,呵呵
在c++中實現變長陣列
1.變長一維陣列
這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做:
//檔名: array01.cpp
#include
using namespace std;
int main()
注意int *p=new int[len];這一句,你不能這樣做:
int p[len];
c++編譯器會報錯說len的大小不能確定,因為用這種形式宣告陣列,陣列的大小需要在編譯時確定。而且這樣也不行:
int p=new int[len];
編譯器會說不能把int*型轉化為int型,因為用new開闢了一段記憶體空間後會返回這段記憶體的首地址,所以要把這個地址賦給一個指標,所以要用int *p=new int[len];
array01.cpp實現了一個變長的一維陣列,但是要養成一個好習慣,就是注意要登出指標p,使程式釋放用new開闢的記憶體空間。
當然使用c++標準模版庫(stl)中的vector(向量)也可以實現變長陣列:
//檔名: array02.cpp
#include
#include
using namespace std;
int main()
cout< }return 0; }執行結果: input value for m,n,l:2 3 4 0: 00492fe0 1: 00492fe4 2: 00492fe8 3: 00492fec 1: 00492fa0 2: 00492fa4 3: 00492fa8 4: 00492fac 2: 00492f60 3: 00492f64 4: 00492f68 5: 00492f6c 1: 00492ec0 2: 00492ec4 3: 00492ec8 4: 00492ecc 2: 00492e80 3: 00492e84 4: 00492e88 5: 00492e8c 3: 00492e40 4: 00492e44 5: 00492e48 6: 00492e4c 8樓:匿名使用者 使用 new 動態建立陣列 莫道無情 c語言程式如下 include void fun int a,int n,int k int i,maxxr,j maxxr a 0 for i 0 iif maxxrmaxxr a i for i 0 iif maxxr a i k fun a,10,k printf d,d k,a k... 風若遠去何人留 c語言一維陣列分靜態一維陣列和動態一維陣列兩種。一 靜態一維陣列,在定義的時候就已經確定其長度。如 int a 10 就是定義了一個長度為10個元素的整型陣列。靜態陣列不支援長度的增加。如果要增加長度,只能新定義一個更長的陣列,並把原始陣列的資料複製到新陣列中。二 動態一維陣列,本質... c語言中,定義陣列後可以用sizeof命令獲得陣列的長度 可容納元素個數 如 但,通過傳遞陣列名引數到子函式中,以獲得陣列長度是不可行的。如 int getlength int a 因為,a是函式引數,到了本函式中,a只是乙個指標 位址,系統在本函式執行時,是不知道a所表示的位址有多大的資料儲存空間...c語言程式設計題定義長度為10的陣列求最大值及
c語言 一維陣列如何增加長度
c語言怎麼獲取陣列的長度