• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как Избавиться От Ошибки Переполнения Памяти?

  • Автор темы tumanovalex
  • Дата начала
T

tumanovalex

Считываю данные short из файла 29 мб и затем вывожу их на график:
C++:
	 private void file_read(string file_name)
{
try
{
reader = new BinaryReader(new FileStream(file_name, FileMode.Open, FileAccess.Read, FileShare.Read));
}
catch (FileNotFoundException e)
{
MessageBox.Show(e.Message.ToString(), "Ошибка!!!", System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Error);
Environment.Exit(1);
}
long file_size = reader.BaseStream.Seek(0, SeekOrigin.End);
num_elem = file_size / sizeof(Int16);
reader.BaseStream.Seek(0, SeekOrigin.Begin);
data = new short[num_elem];
for (int i = 0; i < num_elem; i++)
{
data[i] = reader.ReadInt16();
}
reader.Close();
}

private void file_show(Int16[] data)
{
s = new Series("Sources");
s.ChartType = SeriesChartType.Spline;
s.Color = Color.Red;
for (long i = 0; i < num_elem; i++)
{
s.Points.AddXY(i, data[i]); // Ошибка
}
chart1.Series.Add(s);
chart1.Visible = true;
chart1.Show();
this.Refresh();
}
В строке s.Points.AddXY(i, data) возникает ошибка: "An unhandled exception of type 'System.OutOfMemoryException' occurred in System.Windows.Forms.DataVisualization.dll. Вроде бы файл не такой огромный. На компьютере в разделе Система размер ОЗУ оценивается как 3 gb и доступно 2,7 gb. Подскажите, пожалуйста, как исправить программу. Проект (без файла данных) прилагаю, файл данных 29 мб разместил на
 

Вложения

  • TestCs.zip
    10,7 КБ · Просмотры: 234
L

LuMee

Судя по всему, вы пытаетесь добавить 14 миллионов точек на график, а каждая точка - это не просто число, а еще и определенный объем ресурсов, требуемых для отображения в чарте. Думаю, тут есть смыл хорошенько задуматься: вам реально нужно все эти точки на графике нарисовать? Ибо слабо себе представляю монитор, на котором их все можно будет разглядеть.

Необходимо, в общем, пересмотреть подход к визуализации. Варианты с ходу:
1. показывать только фрагмент графика (скажем, тысячу точек) с возможностью скроллинга к следующему/предыдущему фрагменту;
2. отображать некоторую аппроксимацию вашей последовательности с меньшим количеством точек. Алгоритм построения такой аппроксимации надо хорошенько обмозговать; он будет зависеть от ваших данных.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!