Что это значит?void * free_me = 0; - PullRequest
2 голосов
/ 15 марта 2012
uint8_t* baseAddress = CVPixelBufferGetBaseAddress(imageBuffer); 
    void* free_me = 0;
    if (true) { // iOS bug?
        uint8_t* tmp = baseAddress;
        int bytes = bytesPerRow*height;
        free_me = baseAddress = (uint8_t*)malloc(bytes);
        baseAddress[0] = 0xdb;
        memcpy(baseAddress,tmp,bytes);
    }

Эта программа находится в пакете zxing, что означает это предложение "void * free_me = 0;"имею в виду?Что делает эта программа?Любые советы будут оценены.

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

void* free_me = 0 объявляет «общий» указатель free_me и присваивает ему значение 0

Могут использоваться общие указатели, почти как любые другие указатели (int*, char* и т. Д.), За исключением того, что указатели на void могут фактически указывать на ЛЮБОЙ тип данных.

2 голосов
/ 16 марта 2012

Этот код очень неясен и, как говорится в комментарии, предназначен для обхода неясной ошибки в iOS.В ранних версиях AV Foundation Framework на некоторых устройствах с буферизацией происходили очень странные вещи.Этот код копирует буфер, а не использует его напрямую.Имеется материал if (true), так что мы можем (в конце концов) отключить этот путь для устройств / SDK, которые не нуждаются в обходном пути.

...