0

私はこのルーチンを使用して、ファイルからメモリへのバイナリ読み取りを実行します。これは、これまでは正常に機能していました...少なくともiOSでは、シミュレーターで(...有料の開発者プログラムはありません(まだ;)))

fileSize、bytesReadなどの数値は問題ありませんが、最後にぎこちないものになります...

すぐに出力するので、メモリを上書きすることはできません...

次に、これはアライメント境界の問題である可能性があると考えました。たとえば、fileSize%4=detです。ジブリッシュ。しかし、それは奇妙な動作になります。関数はサイズとカウントを取得します。libはバックグラウンドで読み取られた複数バイトを計算する必要があるため、問題は発生しません...

私が使用するコードは次のとおりです。

uint8_t *readFileToMemory(FILE *fp)
{
    fseek(fp, 0, SEEK_END);
    long fileSize = ftell(fp);
    rewind(fp);
    //
    printf("fileSize %lu bytes\n",fileSize);
    //
    uint8_t *fileData = NULL;
    //
    fileData = (uint8_t *)requestMemory(fileData, (MEM_TYPE_MEMSIZE)fileSize, BF_MEM_ZERO_NO, "readFileToMemory()");
    fread(fileData, 1, (size_t)fileSize, fp);
    //
    long sizeRead = fread(fileData, 1, (size_t)fileSize, fp);
    printf("sizeRead %lu bytes\n",sizeRead);
    //
    fclose(fp);
    //
    printf("+\n+\nfileData:\n%s+\n+\n",fileData);
    //
    return fileData;
}

私がこの質問を投稿する理由は、「なぜジブリッシュなのか」です。iOS-simでは、簡単な回避策があります...

ニールズ

4

1 に答える 1

0

私は今ここにいるので、閉鎖の答えを提供したほうがいいかもしれません;)

(c / glsl NULLで終了する)文字列として渡す前に、バイナリファイルの最後に「\0」を付けるのを忘れました...おっと:)

Apple libsのバイナリ読み取りに関する彼の発言にborrrdenに感謝しますが、それについてはまだ調べる必要があります...(time time time)

ニールズ

于 2012-08-22T12:59:52.730 に答える