我正在写一个.tga读者。我可以完美地读取标题,然后我想读取文件的数据部分,但如果我到达那里它会给我错误:
Unhandled exception at 0x76ffa2ce in TGALoader.exe 0xC0000005: Access violation reading location 0xffff0008
文件的长度为65580
,我在65536
长度标题后阅读18 bytes
。
我目前的代码是(我删除了非重要部分):
// Texture variables
GLint bitsPP;
GLsizei width;
GLsizei height;
GLubyte *imgData;
/////////////////////////////////////////////////
file.seekg( 0, std::ios::end );
std::cout << file.tellg() << "\n"; // 65580
file.seekg( 0, std::ios::beg );
file.read( ( char* )&tGAHeader, sizeof( tGAHeader ) );
texture->width = tGAHeader[13] * 256 + tGAHeader[12];
texture->height = tGAHeader[15] * 256 + tGAHeader[14];
texture->bitsPP = tGAHeader[16];
short bytesPP = texture->bitsPP / 8; // 4
unsigned int imgSize = texture->width * texture->height * bytesPP; // 65536
texture->imgData = new GLubyte[imgSize];
file.read( ( char* )&texture->imgData, imgSize ); // Access violation reading location
我无法想象会出现什么问题,所以我希望有人可以帮助我。
提前致谢!
答案 0 :(得分:3)
更改
file.read( ( char* )&texture->imgData, imgSize )
通过
file.read( ( char* )texture->imgData, imgSize )
texture->imgData
只是一个指针,不要将它用作第二个间接级别