私はこのルーチンを使用して、ファイルからメモリへのバイナリ読み取りを実行します。これは、これまでは正常に機能していました...少なくとも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では、簡単な回避策があります...
ニールズ