Не выделяется память под массив - C (СИ)
Формулировка задачи:
void FloodFill_3(HDC hdc, RECT rect, COLORREF color, COLORREF border) //Растровая развертка многоугольников
{
//flags - состояние каждого пиксела в строке: -1 - граница, 0 - вне фигуры, 1 - внутри фигуры
int *flags = (int*) malloc((rect.right - rect.left) * sizeof(int));
bool flag = false; //false - вне фигуры, true - внутри фигуры (только для случая: [i] == !border, при [i-1] == border)
for(int y = rect.top; y <= rect.bottom; y++)
{
int i = 0;
for(int x = rect.left; x <= rect.right; x++)
{
if(i == 0)
if(GetPixel(hdc,x,y) != border)
flags[i] = 0;
else
{
flags[i] = -1;
flag = true;
}
else
if(GetPixel(hdc,x,y) != border)
{
if(flags[i-1] == -1)
if(flag)
{
flags[i] = 0;
flag = false;
}
else
{
flags[i] = 1;
flag = true;
}
if(flags[i-1] == 0)
{
flags[i] = 0;
flag = false;
}
if(flags[i-1] == 1)
{
flags[i] = 1;
flag = true;
}
}
else flags[i] = -1;
if(flags[i] == 1)
SetPixel(hdc,x,y,color);
i++;
}
}
}Решение задачи: «Не выделяется память под массив»
textual
Листинг программы
enum TEST
{
int a;
int b;
int c;
}