gpt4 book ai didi

C++ - 读取 .tga 文件时访问冲突读取位置

转载 作者:行者123 更新时间:2023-11-28 00:51:31 24 4
gpt4 key购买 nike

我正在编写一个 .tga 阅读器。我可以完美地读取标题,然后我想读取文件的数据部分,但是如果我到达那里,它会给我错误:

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

文件的长度是65580,我在18字节长度的header后面读到65536

我现在的代码是(我删掉了不重要的部分):

// 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

我无法想象会出现什么问题,所以我希望有人能帮助我。

提前致谢!

最佳答案

改变

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

通过

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

texture->imgData 只是一个指针,不要在第二个间接级别使用它

关于C++ - 读取 .tga 文件时访问冲突读取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13838594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com