реклама на сайте
подробности

 
 
> Правильно ли так использовать функцию calloc?
011119xx
сообщение Oct 5 2011, 03:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Работаю в Keil ARM. Проект под STM32. Пытаюсь разобраться с файлом gif. Использую библиотеку libungif-4.1.4. Приведу только часть кода в которой возникла проблема:
Код
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;                                                        
    }

    ..........


В данном куске кода выделяется память под глобальную палитру. Выделить то надо всего 768 байт. Память по функции malloc выделяется. А вот по calloc нет. Первая мысль, которая возникла, это не хватает памяти. Но такое не может быть, так как на борту 96 кило памяти и ей просто некуда деться. И вторая мысль - неправильное использование функции calloc. Есть у кого какие соображения?

Сообщение отредактировал 011119xx - Oct 5 2011, 03:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 011119xx   Правильно ли так использовать функцию calloc?   Oct 5 2011, 03:47
- - Idle   использование функции calloc - правильное CODE...   Oct 5 2011, 05:17
|- - 011119xx   Цитата(Idle @ Oct 5 2011, 11:17) использо...   Oct 5 2011, 05:39
|- - Idle   Цитата(011119xx @ Oct 5 2011, 09:39) Не в...   Oct 5 2011, 06:21
- - demiurg_spb   Принципиальная разница между calloc и malloc лишь ...   Oct 5 2011, 05:27
- - Сергей Борщ   QUOTE (011119xx @ Oct 5 2011, 06:47) Перв...   Oct 5 2011, 11:07
|- - 011119xx   Цитата(Сергей Борщ @ Oct 5 2011, 17:07) А...   Oct 5 2011, 11:28
- - 011119xx   Увеличил размер кучи, теперь с выделением памяти п...   Oct 6 2011, 03:00
|- - barabek   А так? Кодfor(i = 0; i < 4; i++) ...   Oct 6 2011, 03:54
|- - Палыч   Параметр функции tolower является не строка, а сим...   Oct 6 2011, 04:05
|- - demiurg_spb   Цитата(011119xx @ Oct 6 2011, 07:00) В че...   Oct 6 2011, 05:15
- - 011119xx   Можно ли в процессе отладки где-то посмотреть скол...   Oct 10 2011, 10:48
- - demiurg_spb   Цитата(011119xx @ Oct 10 2011, 14:48) Мож...   Oct 10 2011, 11:15
- - Сергей Борщ   QUOTE (demiurg_spb @ Oct 10 2011, 14:15) ...   Oct 10 2011, 11:53
- - 011119xx   Цитата(demiurg_spb @ Oct 10 2011, 17:15) ...   Oct 11 2011, 01:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016