Здравствуйте!
Я новичок в программировании. Мне нужно срочно дописать курсовую по методам сортировки. Я пытаюсь создать массив, который надо будет отсортировать так:
int a[500000];
Но программа падает с ошибкой стека. Почему? Что делать?
Отправлен: 30.01.2005, 23:16
Вопрос задал: Маратов Марат Маратович (статус: Читатель)
Всего ответов отправлено: 4
Отвечает: CrackLab
Здравствуйте, Маратов Марат Маратович!
Дело в том что локальные переменные создаются в стеке. Размер стека ограничен 1 Мб. Вы пытаетесь занять место в стеке равное 500000*4 = 2 Мб, вследствие чего и получаете ошибку переполнения стека. Такие большие массивы и объекты создаются в специальной динамически распределяемой области памяти называемой "куча". В С++ это проще всего сделать с помощью оператора new например так:
int *a = new int[500000];
Далее можете работать с массивом "a" так же как и с обычным массивом, размещаемым в стеке.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 30.01.2005, 23:27
Отвечает: AxMAD
Здравствуйте, Маратов Марат Маратович!
Я так полагаю вы это написали в каком-нибудь Borland C++ 3.0(3.1) for DOS !
Сразу такой большой вам неопределить это же около 2mb памяти нужно !
Ответ отправил: AxMAD (статус: 9-ый класс)
Отправлен: 31.01.2005, 10:57
Отвечает: vitya
Здравствуйте, Маратов Марат Маратович!
без алгоритма, я вам ничего не скажу... ошибка у вас...
Ответ отправил: vitya (статус: Профессор)
Отправлен: 31.01.2005, 12:25
Отвечает: Tigran K. Kalaidjian
Здравствуйте, Маратов Марат Маратович!
Попробуйте определить таким образом:
int *a = new int[500000];
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 01.02.2005, 19:39