簡體   English   中英

如何從C ++清除lua堆棧中的所有內容?

[英]How do I clean everything in lua stack from C++?

盡管我通過調用lua_getglobal來盡可能地減少了該錯誤,但長期來看還不夠好。 那么,有誰知道我該如何清理lua堆棧中的所有內容以防止內存管理問題?

- -編輯 - -
從我剛剛做的實驗中, lua_settop會將表清理為給定值。 但是,當我知道我要刪除多少個項目時, lua_pop更有效嗎?

一個簡單的lua_settop(L, 0); 應該可以。

一個簡單的盡管有個例子,但示例說您有一個lua_CFunction

int foo(lua_State *L)
{
  // marshal some random data
  int bar = luaL_checknumber(L, 1);
  const char *baz = luaL_checkstring(L, 2);
  // do foo's task

  // completely clear the stack before return
  lua_settop(L, 0);
  return 0;
}

這是人為設計的,因為如果VM調用了foo則不需要清理。 但是,如果您有直接調用foo C ++代碼,則可能有必要。 無論如何希望這可以說明其調用上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM