2012-12-12 50 views
0

我在寫一個.tga讀取器。我可以完美讀取頭,在那之後,我想讀取文件的數據部分,但如果我有它給我的錯誤:C++ - 讀取.tga文件時訪問違規讀取位置

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

文件的長度是65580,我在18 bytes長度標題後讀取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 

我無法想象會是一個問題,所以我希望有人能幫助我。

在此先感謝!

回答

3

變化

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

通過

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

texture->imgData只是一個指針,不使用它的第二級間接

+0

非常感謝您!我嘗試了幾乎所有的東西,但我從來沒有想過,這可能是問題所在。 – matthew3r