Я пытаюсь сделать простой рендериндр mandelbrot, чтобы попасть в C# и формы, но когда я делаю изображение, у программы иногда заканчивается память.У простого рендерера Mandelbrot заканчивается память
Память накапливается до 2 ГБ, а затем падает.
Но иногда это создает ıA тектуру, как это и Dont аварии: http://puu.sh/l2ri9/2fcd47e6d7.png
============== Код для визуализации ========= =======
Renderer.CreateGraphics().Clear(Color.White);
double minR = System.Convert.ToDouble(MinR.Value);
double maxR = System.Convert.ToDouble(MaxR.Value);
double minI = System.Convert.ToDouble(MaxI.Value);
double maxI = System.Convert.ToDouble(MinI.Value);
int maxN = System.Convert.ToInt32(Iterations.Value);
SolidBrush MandelColor = new SolidBrush(Color.Red);
for (int y = 0; y < Renderer.Height; y++)
{
for (int x = 0; x < Renderer.Width; x++)
{
double cr = fitInRRange(x, Renderer.Width, minR, maxR);
double ci = fitInIRange(y, Renderer.Height, minI, maxI);
int n = findMandelbrot(cr, ci, maxN);
double t = ((n + 0.0)/(maxN + 0.0));
MandelColor.Color = Color.FromArgb(System.Convert.ToInt32(9 * (1 - t) * t * t * t * 255), System.Convert.ToInt32(15 * (1 - t) * (1 - t) * t * t * 255), System.Convert.ToInt32(8.5 * (1 - t) * (1 - t) * (1 - t) * t * 255));
Renderer.CreateGraphics().FillRectangle(MandelColor, x, y, 1, 1);
}
}
=== Ссылка на Github страницу === https://github.com/JimAlexBerger/MandelbrotProject
Вы компилируете это как 32 или 64 бит? Если это возможно, вы должны скомпилировать это как 64-битное, это даст вам доступ к большему количеству памяти, если у вас это будет, поскольку 32-разрядный бит имеет ограничение на 4 ГБ памяти. – Jaco
Do __not__ использовать 'Renderer.CreateGraphics()' в цикле. Вероятно, вы не должны использовать 'CreateGraphics' __at all__. Что такое «Renderer»? Контроль? Лучше всего рисуйте «битмап bmp» и используйте 'using (Graphics G = Graphics.FromImage (bmp)) {ваши циклы здесь!}' – TaW