2012-03-15 12 views
2
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;"とは何ですか?平均?このプログラムは何をしていますか?任意のヒントが評価されます。これはどういう意味ですか? void * free_me = 0;

答えて

3

void* free_me = 0は、「一般的な」ポインタfree_meを宣言し、それを0

ジェネリックポインタはポインタが缶を無効にすることを除いて、他のポインタ(int*char*、など)などかなり多く、使用できる値を与えます実際には任意のデータ型を指します。

2

このコードは非常にあいまいであり、コメントのように、iOSのあいまいなバグを回避する方法があります。特定のデバイス上のAV Foundation Frameworkの初期のバージョンでは、バッファリングに非常に奇妙なことが起こりました。このコードは、バッファを直接使用するのではなくコピーします。問題が解決されないデバイス/ SDKのために、このパスを(最終的に)無効にすることができるように、そこにあるものがあります。

+0

ありがとう。このコードは、直接バッファを使用するのではなく、バッファをコピーするだけです。 – Petros

+0

それはとても奇妙です。 – Petros

+0

0xdbによって最初のバイトが上書きされるのはなぜですか? – lhunath

関連する問題