Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

The code is here, and it is compiled by G++. After input N=600000 and enter. A window popped out said that *.exe has stopped working. When debugging the code, a window titled Error said that Program received signal SIGSEGV, Segmentation fault. when come to sort line. Now, I know it's stackoverflow error.Thank you, all guys!

#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <algorithm>

int main (int argc, char *argv[]) {

int N;
std::cout << "N:";
int a[N];
for(int i = 0; i < N; i++){
    a[i] = rand()%N;
}
std::sort(a,a+N);
std::cout << "The "<<N/2<<"th smallest number is: " << a[N/2-1] <<"
";
return 0;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
289 views
Welcome To Ask or Share your Answers For Others

1 Answer

600000 array size is too much memory on stack.Instead use a global array.

#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <algorithm>
const int MAX = 600001;
int a[MAX]; //make it global
    int main (int argc, char *argv[]) {
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...