当我编译我的程序进行调试时,Lua运行正常,但为什么我为了发布而编译它我得到一个c0000005错误

时间:2012-04-07 03:58:47

标签: c++ visual-studio-2010 lua

我正在将LUA用于SDL项目。我从这里下载了预编译的LIB和DLL文件(http://sourceforge.net/projects/luabinaries/files/5.2/Windows%20Libraries/Dynamic/)(lua-5.2_Win32_dll10_lib.zip)并将其合并到我的项目中。当我构建调试版本时,应用程序运行100%正常。当我将其设置为释放模式并按下Visual Studio中的“播放”按钮时,它也运行正常。

但如果我通过在文件夹中双击它来运行Release文件,我会得到错误c0000005和lua52.dll。

我正在运行MicroSoft Visual C ++ 2010 Express。

我经历了删除行,直到它开始工作,导致错误的行是。

void aiBrainmanager::run(string holdData){

int errfunc = 0;
int s;
int s = luaL_loadstring(L, holdData.c_str());

if ( s==0 ) {
    s = lua_pcall(L, 0, LUA_MULTRET, errfunc);
}
if (errfunc !=0) {

}
if (s !=0) {

    aiBrainmanager::target->stopWorking();
}


}

任何设置错误或如何解决它。

1 个答案:

答案 0 :(得分:1)

0xc0000005是内存违规。它在调试中工作的事实意味着许多可能的事情。

  1. 内存未初始化或设置不正确(在调试时它的初始化为0)因此字符串终止,例如。
  2. 内存要求大于缓冲区允许的内容(在调试时可以填充)。
  3. 您的代码在调试中执行的操作与编译(#if etc。)
  4. 不同

    看看你的代码我会看:

    为什么要检查错误然后什么都不做?????

    if (errfunc !=0) { 
     // What happens in here??????
    } 
    
      

    lua_pcall function在成功或其中一个时返回0   以下错误代码(在lua.h中定义):

         
        
    • LUA_ERRRUN:运行时错误。

    •   
    • LUA_ERRMEM:内存分配错误。对于此类错误,Lua不会调用错误处理函数。

    •   
    • LUA_ERRERR:运行错误处理函数时出错

    •   

    我想你会发现你的 LUA_ERRMEM