2014-01-23 46 views
-2

我知道我正在做一些非常愚蠢的內存訪問方式,但無法弄清楚如何解決它。Segfault from Vector.end()?

if(isKeyDown("DERP")) 
{ 
    thisStack->pop(); 
} 

調用

void aeonstack::pop() 
{ 
    if(!aeonstack::statestack.empty()) 
    { 
     if(aeonstack::statestack.size()>1) 
     { 
      aeonstack::statestack.at(aeonstack::statestack.size()-1)->cleanUp(); 
      aeonstack::statestack.pop_back(); 
     } 
     else 
     { 
      aeon::log("WARNING: Tried to pop only state."); 
     } 
    } 
    else 
    { 
     aeon::log("WARNING: Tried to pop empty state stack."); 
    } 
} 

導致段錯誤。

完整的源代碼可在aeonsplice.com/segfault.zip

+0

http://pastebin.com/RCB3A5EW – Athix

+2

你應該發佈一個小而完整的例子來重現問題。 – juanchopanza

回答

2

指針變量thisStack似乎並沒有在任何地方初始化。你在某處建造這個指針的aeonstack嗎?我無法在源文件中找到它?

+0

看來我錯過了在init()中設置它。現在我只需要弄清爲什麼彈出一個狀態後屏幕變爲空白。^_ ^ – Athix