我宣佈我的頭文件中像這樣的數組:C++ Segfault,我不知道爲什麼?
private:
int frames[10];
而且在類的構造函數分配了類似這樣的值:
file.open(File);
if(file.is_open())
{
std::string line;
getline(file, line);
std::string param[10];
std::stringstream stream(line);
int n=0;
while(!stream.eof())
{
getline(stream, param[n], '$');
frames[n] = atoi(param[n].c_str());
n++;
}
file.close();
}
這個陣列上後來在一個函數:
currentFrame++;
if(frames[currentAnimation] <= currentFrame)
{
currentFrame = 0;
}
當我運行我運行我的代碼我得到分段錯誤,gdb返回此:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402c22 in Sprite::update (this=0x7ffff6efe678 <main_arena+88>) at Sprite.cpp:93 93
if(frames[currentAnimation] <= currentFrame)
(gdb) bt
#0 0x0000000000402c22 in Sprite::update (this=0x7ffff6efe678 <main_arena+88>) at Sprite.cpp:93
#1 0x0000000000401fcb in main (argc=1, argv=0x7fffffffeb88) at main.cpp:146
我不確定我要去哪裏錯,我認爲這個錯誤在這裏。 我真的不能發佈所有的代碼作爲它的很多,但如果你需要更多 具體信息請直接詢問。
非常感謝您提前。
你如何確保'ñ<10'或'currentAnimation <10'?最有可能你被界訪問了調用未定義的行爲。 –
我猜框架[currentAnimation]引用數組外 – Ashalynd
你試過打印出你使用的索引嗎? –