首先看乙個問題,假如乙個table如下:
local acty =
如果此時這樣操作,對記憶體會有什麼影響?
acty.init =
function()
acty.id =
2end
定義以下內容
local function onparse
(acty)
acty.init =
function()
acty.id =
1 end
return acty
endlocal function test()
acty =
endtest
()
此時記憶體占用1565.498046875k
接下裡,連續對acty進行parse,記憶體占用分別是
--
1565.69921875k
local function test()
acty =
acty =
onparse
(acty)
end--
1565.765625k
local function test()
acty =
acty =
onparse
(acty)
acty =
onparse
(acty)
end--
1566.296875k
local function test()
acty =
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
acty =
onparse
(acty)
end
可以看出每次執行都進行了記憶體分配。
所以小夥伴以後寫的時候一定注意,如果要更新內容,可以table內部定義update方法,外部直接呼叫即可。
關於重複定義 LNK2005
有時候會見到同事寫的 中,標頭檔案一開啟就有如下格式 ifndef define 正文 endif 當時看不出有什麼意義,於是也就不明白為什麼這麼寫了,就這樣讓它做為乙個高階的存在放在記憶裡 今天它從神壇上掉了下來 原來它是意義僅僅是替換 pragma once,然而標頭檔案中都包含此句 omg 這...
轉 關於lua table是否為空的判斷
在專案的指令碼lua中經常有這樣的需求,1 local a 2 對a進行處理 3 對a是否為空表進行判斷 關於對a是否為空表的判斷,我發現有些 如此做 if a then 這樣的結果就是a 永遠返回false,是乙個邏輯錯誤。因為這裡比較的是table a和乙個匿名table的記憶體位址。也有些 如...
c 重複定義
今天測試了一下c 下重複定義會出現什麼問題,使用gcc和vs2010做了測試,兩者的測試結果一樣 一共有5個檔案,2個頭檔案,3個cpp檔案。內容分別如下 ifndef redefine0 h define redefine0 h includeusing namespace std 變數宣告和定義...