Код
typedef unsigned char GifByteType;
typedef struct GifColorType
{
GifByteType Red, Green, Blue;
} GifColorType;
typedef struct ColorMapObject
{
int ColorCount;
int BitsPerPixel;
GifColorType *Colors;
} ColorMapObject;
...............
BitsPerPixel = 8;
ColorMap = (ColorMapObject *)malloc(sizeof(ColorMapObject));
if(ColorMap == (ColorMapObject *) NULL)
{
FATFileClose(fd);
return 0;
}
ColorMap->Colors = (GifColorType *)calloc(1 << BitsPerPixel, sizeof(GifColorType));
if(ColorMap->Colors == (GifColorType *) NULL)
{
free((ColorMapObject *)ColorMap);
FATFileClose(fd);
return 0;
}
..........
typedef struct GifColorType
{
GifByteType Red, Green, Blue;
} GifColorType;
typedef struct ColorMapObject
{
int ColorCount;
int BitsPerPixel;
GifColorType *Colors;
} ColorMapObject;
...............
BitsPerPixel = 8;
ColorMap = (ColorMapObject *)malloc(sizeof(ColorMapObject));
if(ColorMap == (ColorMapObject *) NULL)
{
FATFileClose(fd);
return 0;
}
ColorMap->Colors = (GifColorType *)calloc(1 << BitsPerPixel, sizeof(GifColorType));
if(ColorMap->Colors == (GifColorType *) NULL)
{
free((ColorMapObject *)ColorMap);
FATFileClose(fd);
return 0;
}
..........
В данном куске кода выделяется память под глобальную палитру. Выделить то надо всего 768 байт. Память по функции malloc выделяется. А вот по calloc нет. Первая мысль, которая возникла, это не хватает памяти. Но такое не может быть, так как на борту 96 кило памяти и ей просто некуда деться. И вторая мысль - неправильное использование функции calloc. Есть у кого какие соображения?