1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
||||||
1 | ||||||
Существует ли ограничение при использовании new?21.04.2013, 21:31. Показов 996. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Ситуация: Я создала класс, описание которого ниже, и хочу выделить память под массив экземпляров этого класса размерностью 28000. Проблема в следующем:Во время выполнения программы, в момент выделения памяти вылетает ошибка: Необработанное исключение в "0x74a34b32" в "SPH_var2.exe": Исключение Microsoft C++: std::bad_alloc по адресу 0x00c3f2c4.. В чем может быть проблема? Есть ли ограничение? И как его можно обойти? з.ы. Если размерность меньше 17-18 тысяч, все ок, работает отлично, т.е. по идее в коде ошибки не должно быть. Да, и память освобождаю, деструктор есть. Буду рада любой помощи, спасибо! Описание класса
0
|
21.04.2013, 21:31 | |
Ответы с готовыми решениями:
15
Ограничение трафика при использовании мобильного Интернет Ограничение скорости передачи данных при использовании сокетов. Ограничение вращения камеры при использовании функции Transform.RotateAround Существует ли ограничение на количество ImageView? |
Higher
|
|
21.04.2013, 21:40 | 2 |
У new нет ограничений, ограничения есть лишь на свободную память.
Но для 28к экземпляров вашего класса получается ~5 мегабайт. Скорее всего, ошибка в коде. bad_alloc может вылетать, если вы где-то вышли за границы массива и тем самым повредили кучу. Тогда при последующих аллоках будет вылетать это исключение.
0
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 21:44 [ТС] | 3 |
а почему тогда ошибка вылетает именно в момент выделения, а не использования? Ведь если бы я где то в коде выходила за пределы массива, то ошибка появилась бы там где я его использую.
0
|
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
|
|
21.04.2013, 21:44 | 4 |
Omus, если студия, попробуйте в релизе.
0
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 21:46 [ТС] | 5 |
UnsKneD, попробовала, без изменений.(
0
|
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
|
||||||
21.04.2013, 21:52 | 6 | |||||
Omus, понаблюдайте, сколько прога памяти жрёт перед падением?
Добавлено через 1 минуту Omus, кстати вы ведь не выделяете память под
1
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 21:53 [ТС] | 7 |
UnsKneD, посмотрела. 2030Мб
0
|
Higher
|
|
21.04.2013, 21:53 | 8 |
Не обязательно. Ошибка будет, если вы попытаетесь записать в чужой процесс или в read-only секцию.
А вот если вы выходите за границы массива, но при этом остаетесь в своем процессе, то при этом вы затираете какие-то данные, которые могут вами вообще не использоваться, но при этом они необходимы для выделения памяти.
0
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 21:53 [ТС] | 9 |
UnsKneD, выделяю, но до этого момента не доходит дело
0
|
Higher
|
|
21.04.2013, 21:56 | 10 |
А, ну тогда все понятно. Я посчитал указатель указателем, а не массивом.
Тогда вам нужно просто сменить тип приложения на 64 битное. 32 битные приложения не могут съедать более 2 гигабайт памяти.
1
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 21:59 [ТС] | 11 |
diagon, аа, понятно. Спасибо! А как это сделать?
0
|
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
|
|
21.04.2013, 22:00 | 12 |
Omus, у вас память кончилась, т.е вы где то её не очистили.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
21.04.2013, 22:06 | 14 | |||||
Ошбику при выделениии проверить просто:
0
|
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
|
|
21.04.2013, 22:08 | 15 |
Так нагляднее будет,
0
|
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
|
|
21.04.2013, 22:14 [ТС] | 16 |
Ура! Всем большое спасибо! Заработало)
0
|
21.04.2013, 22:14 | |
21.04.2013, 22:14 | |
Помогаю со студенческими работами здесь
16
Существует ли ограничение на количество thread-ов на одно приложение? Как перенести строку при записи в файл при использовании BufferedWriter? При использовании оператора GOTO зацикливается программа при введении букв. Ошибка при использовании ADODB.CONNECTION при работе с dbf-файлом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |