0

私は.tgaリーダーを書いています。ヘッダーを完全に読み取ることができ、その後、ファイルのデータ部分を読み取りたいのですが、そこに到達するとエラーが発生します。

Unhandled exception at 0x76ffa2ce in TGALoader.exe 0xC0000005: Access violation reading location 0xffff0008

ファイルの長さは、で、長さヘッダーの後65580に読みます。6553618 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

何が問題になるのか想像がつかないので、誰かが助けてくれることを願っています。

前もって感謝します!

4

1 に答える 1

3

変化する

file.read( ( char* )&texture->imgData, imgSize )

file.read( ( char* )texture->imgData, imgSize )

texture->imgData単なるポインタです。2番目の間接レベルでは使用しないでください。

于 2012-12-12T11:58:00.073 に答える