Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > malloc Нелепая ошибка


Автор: Dufrense 9.10.2005, 11:11
Код

#include <stdio.h>
#include <stdlib.h>
#include "bmpheader.h"
#include "types.h"



int main(int argc, char* argv[])
{
    BITMAPFILEHEADER bfHead;
    BITMAPINFOHEADER biHead;
    FILE *bFile;
    bFile = fopen("clo160.bmp","rb");
    bfHead.Read(bFile);
    cout<<"------------BITMAPFILEHEADER------------"<<endl;
    bfHead.Show();
    biHead.Read(bFile);
    cout<<"------------BITMAPINFOHEADER------------"<<endl;
    biHead.Show();

    unsigned char *iPixels;

    unsigned int width;
    unsigned int height;

    width = biHead.biWidth;
    height= biHead.biHeight;

    iPixels = malloc(width * height * 3);  // Вот здесь ошибка

    fread(iPixels, 3, width * height , bFile);
    
    return 0;
}


Вылетает следущая ошибка:
I:\Program Files\DevStudio\MyProjects\algoritm\lab1\main.cpp(29) : error C2440: '=' : cannot convert from 'void *' to 'unsigned char *' Conversion from 'void*' to pointer to non-'void' requires an explicit cast

Автор: DeadSoul 9.10.2005, 11:20
Dufrense, нужно писать так
Код

iPixels = (unsigned char *)malloc(width * height * 3);

Далее, ты забыл free сделать.

Далее2. Ты используешь cout, значит пишешь на Си++. Тогда может лучше использовать std::fstream для чтения из файла и new+delete для управления памятью?

Автор: Dufrense 9.10.2005, 11:46
Спасибо за помощь
Я бы рад использовать fstream, по началу именно с ним все и делал, но в результате появилась проблема:
http://forum.vingrad.ru/index.php?showtopic=66674
Поэтому использую переменную типа FILE.
С new и delete еще не разбирался, попробую что-нибудь сделать. Спасибо за совет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)