Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 32
от 04.02.2005, 23:20

Администратор:Калашников О.А. (adm@rusfaq.ru)
В номере:Вопросов: 1, Ответов: 4


Вопрос № 16453
Здравствуйте!
Я новичок в программировании. Мне нужно срочно дописать курсовую по методам сортировки. Я пытаюсь создать массив, который надо будет отсортировать так:
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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное