Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010

Ошибка переполнения памяти

05.04.2019, 11:37. Показов 2446. Ответов 10

Студворк — интернет-сервис помощи студентам
Почему такое произошло?

каждый игровой кадр делал некую проверку и мне нужно было складировать числа, для этого выбрал List<int>.
в начале игрового кадра делаю
C#
1
list.Clear(); // не новый создавал, а именно очищал
в нужный момент добавлял некое число int или несколько
C#
1
list.add(number);
далее делал то что мне нужно для проверки.
и так по кругу каждый кадр.

все бы хорошо, но через некоторое время программа мне выдала исключение по переполнению памяти.
именно в этой строке
list.add(number);

удивился, подумал как можно выйти из ситуации и заменил все на массив.
C#
1
2
3
4
5
6
7
int[] arrayNumber = new int[10];
..
// в начале кадра
Array.CLear(arrayNumber, 0, arrayNumber.Lenght);
..
// вставляю
arrayNumber[i] = number;
вроде бы помогло, но осадочек остался.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2019, 11:37
Ответы с готовыми решениями:

Как создать большой bitmap и избежать переполнения памяти
У меня такая проблема - нужно создать большой bitmap, размером так 15000x15000. Вызывает ошибку =) Из-за нагрузки на память, видимо,...

Как избавиться от ошибки переполнения памяти?
Считываю данные short из файла 29 мб и затем вывожу их на график: private void file_read(string file_name) { try ...

Как избавиться от переполнения памяти при очистке большого html файла?
Всем привет. Имею текстовый фаил объемом 100 мегабайт. В html коде. Там большой набор статичтических данных. Начинаю его чистить выдает...

10
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
05.04.2019, 11:44
MuaddibFremen, это значит лишь одно: вы не очищали список, а забивали его до тех пора, пока оперативка не заканчивалась. Почему так происходило вам поможет узнать отладчик.
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
05.04.2019, 11:48  [ТС]
и вот хотелось бы спросить как мне это улучшить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
               // проверяем вся ли земля
                for (int j = 0; j < landsNumbers.Length; j++)
                {
                    if (j == 0)
                            if (listLands[landsNumbers[j]].type != TypeLands.Ground)
                                return false;
                    // наш массив заполняется нулями если там ничего нет. иначе номер блока TypeLands
                    if (landsNumbers[j] != 0)
                    {
                        if (listLands[landsNumbers[j]].type != TypeLands.Ground)
                            return false;
                    }
                }
как мне проверку на ноль улучшить, если вообще я правильно делаю?
if (landsNumbers[j] != 0)
мне нужно проверять только те что не нулевые

Добавлено через 3 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
вы не очищали список
каждый кадр оно его очищало, даже не каждый кадр, а внутри кадра могло очиститься пару раз по надобности при вхождении в тот операторный блок.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
05.04.2019, 11:49
Цитата Сообщение от MuaddibFremen Посмотреть сообщение
каждый кадр оно его очищало, даже не каждый кадр, а внутри кадра могло очиститься пару раз по надобности при вхождении в тот метод.
Это вы так думаете. А в реальности вы получили исключение.
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
05.04.2019, 11:52  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Это вы так думаете
я не думаю я знаю. выводил количество в риалтайме 2-7
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
05.04.2019, 11:53
MuaddibFremen, если вы получили исключение описанное выше, то память кончилась. Её скушал или указанный вами список, или иной объект.

Я вам рекомендую вернуть всё назад, как было с ошибкой. А потом запустить ваше приложение под профилировщиком студии (в ней есть такие штуки) и посмотреть, кто всю кучу забивает и чем.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
05.04.2019, 11:55
Цитата Сообщение от MuaddibFremen Посмотреть сообщение
выдала исключение по переполнению памяти.
именно в этой строке
сколько элементов было в листе на момент исключения?
Цитата Сообщение от MuaddibFremen Посмотреть сообщение
вроде бы помогло, но осадочек остался.
можете верить в баги компилятора/языка/студии, а можете выяснить причину и хлопнуть себя по лбу за опечатку или банальную ошибку
0
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
05.04.2019, 11:59
даже не представляю что надо туда запихнуть, что бы вы получили такую ошибку. можно посмотреть ваш код с реализованным списком?
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
05.04.2019, 12:00
Да нечего тут на код смотреть) Пускай ТС на "кучу" посмотрит во время слова исключения и всё сразу станет ясно.
0
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
05.04.2019, 12:07  [ТС]
Immo, КОП, Usaga,
в понедельник попробую все вернуть в зад.
сейчас нет того истинного кода.
0
05.04.2019, 12:40

Не по теме:

Цитата Сообщение от MuaddibFremen Посмотреть сообщение
вернуть в зад.
Если оно оттуда было взято, тогда неудивительно, что там глюки такие... :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2019, 12:40
Помогаю со студенческими работами здесь

Ошибка переполнения при DrawImage
Возникает такая ошибка при клике на форме(в некоторых точках): Код: public partial class Form1 : Form { public...

Ошибка переполнения при вызове формы
Добрый день, форумчане! Пытаюсь нарисовать график функции по заданной функции с различными границами прорисовки. Возникает ошибка...

При создании экземпляра класса в другом классе вылазит ошибка переполнения
using System; using System.Drawing; namespace WindowsFormsApplication4 { /// &lt;summary&gt; /// ИИ /// &lt;/summary&gt; ...

Причина переполнения памяти
Добрый день. Win 7 стоит уже 2 года (не переустанавливал) на ноутбуке. Много чего ставил на нее, базы данных, компиляторы... Играю в...

Утечка памяти из-за переполнения GDI-объектами
Господа! помогите пожалуйста разобраться с непонятным недокументированным багом в моей маленькой программе в следствии которого в программе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru