使用偏移量复制数据的Malloc和memcpy

时间:2014-09-22 08:39:49

标签: c++ malloc memcpy

我有一个curl回调,其中包含一些标题信息,然后是jpeg图像。

我想从这些数据中复制出jpeg图像并将其保存到文件中 我之前从未使用过malloc或memcpy,但我做了以下事情:

//data = the data that curl has returned
//datalength = the length of the data that curl has returned
//startpos = the starting position of the jpeg image in data
//the length of the jpeg image

//example data
//datalength=13209
//startpos = 62
//imagelangth=13127
bool SaveImage( void* data, size_t datalength, int startpos, int imageLength)
{
    //1. Allocate a buffer to store the jpeg image
    BYTE* image = (BYTE*)malloc(sizeof(BYTE)*imageLength);
    if( image != nullptr)
    {
        //2. Copy out the image info to the buffer
        BYTE* imageStartPos = (BYTE*)data + startpos;
        memcpy( image, imageStartPos, imageLength);

        //3. Save the image to file
        FILE* pFile;
        fopen_s(&pFile, "image.jpeg", "w");
        if(pFile != NULL)
        {
            fwrite(image,sizeof(BYTE), imageLength, pFile);
            fclose(pFile);
        }
    }
}

结果是我创建了一个大小约为13k的jpeg图像,但我无法在ms画中打开它,因为它说它已损坏。我假设我在上面的指针计算中犯了一个错误。

任何关于我做错事的人都有任何想法吗?

0 个答案:

没有答案