我使用这个例程来执行从文件到内存的二进制读取,到目前为止工作正常...至少在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上,我确实有一个简单的解决方法btw ...
尼尔斯
答案 0 :(得分:0)
我现在在这里,所以我不妨提供关闭的答案;)
我忘了在二进制文件的末尾添加'\ 0',然后将其作为(c / glsl以NULL结尾)字符串传递...哎呀:)
我感谢borrrden对Apple libs二元阅读的评论,我仍然需要研究......(时间时间)
尼尔斯