Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: exited with code -1073741571 при больших массивах
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
PiT2000
День добрый.
Есть вот какая проблема. При использовании больших массивов
................................
    double x[99999];
    double y1[99999];
    double y2[99999];
................................

во время запуска приложения вылазит ошибка exited with code -1073741571
при этом вот так работает нормально
................................
    double x[75000];
    double y1[75000];
    double y2[75000];
................................

пробовал объявлять так
................................
    double x[];
    double y1[];
    double y2[];
................................

при достижении какой то критической массы происходит таже ошибка

Win 7
версия Qt 4.7.1
RazrFalcon
В дебаг запускать пробовали?
Что бы найти место вылета.
Litkevich Yuriy
почитай тут
PiT2000
В System32 Qt библиотек нет.
PATH
C:\MinGW\bin;
C:\Qt\4.7.1\bin;
%SystemRoot%\System32

Судя по дебагу прерывается на входе в main
BRE
Нельзя такие большие массивы определять на стеке, он не резиновый.
Используй кучу.
PiT2000
Цитата(BRE @ 16.6.2011, 11:36) *
Нельзя такие большие массивы определять на стеке, он не резиновый.
Используй кучу.

Во оно самое. Спасибо.
Алексей1153
PiT2000, по стек уже сказали, про кучу тоже

а вот тут
Цитата
пробовал объявлять так
................................
    double x[];
    double y1[];
    double y2[];
................................

при достижении какой то критической массы происходит таже ошибка

- что ты имел в виду ?
По идее, это массив нулевой длины на стеке. То есть ты лез в стек, портя всё любое, пока не переполнил стек и не вывалилась ошибка переполнения
PiT2000
По идеи да. Ошибка вываливалась примерно в тот же период как и если указать линну
Алексей1153
PiT2000, как это вообще произошло у тебя. Не контролируешь индекс на выход за край массива. Обрати внимание на этот момент везде в программе :)
PiT2000
Ок. спс.
Кирилл
а теперь для чайников - что такое куча?


та же проблема с большим массивом.
Litkevich Yuriy
Цитата(Гость_Кирилл_* @ 11.7.2013, 0:39) *
а теперь для чайников - что такое куча?
буквально "куча памяти" (термин со времён когда памяти было очень мало в и стали появляться машины с дополнительной памятью, которая просто так была не доступна).

когда переменная создаётся так:
Type myVar;
то она создаётся на стеке (программы).
А когда создаётся динамически:
Type *pointerToMyVar; // указатель создаётся на стеке
pointerToMyVar = new Type();// объект создаётся на(в) куче
, то на/в куче (т.е. область общей памяти, не относящейся к данной программе)

Википедия
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.