lua_newuserdata如何對齊分配的內存?它依賴於malloc/calloc,還是它做它自己的東西?有什麼辦法可以保證對齊而不必爲此添加代碼?Lua用戶數據對齊
自己編寫對齊代碼不是問題,但如果不需要,那我當然不會。
lua_newuserdata如何對齊分配的內存?它依賴於malloc/calloc,還是它做它自己的東西?有什麼辦法可以保證對齊而不必爲此添加代碼?Lua用戶數據對齊
自己編寫對齊代碼不是問題,但如果不需要,那我當然不會。
Lua中的所有內存分配都是在您使用lua_newstate
創建狀態時給出的user-supplied allocator中完成的。
如果您使用luaL_newstate
而不是lua_newstate
,則Lua會使用a memory allocator based on realloc
。
看來,Lua使用標準的C realloc()函數,並沒有執行額外的對齊。 –
謝謝,我會寫我自己的對齊碼。 – Thorham
實際上,Lua *自己對用戶數據的有效載荷進行對齊。你不可能獲得比分配器更多的連接,但你可以減少。參見[userdata的定義](http://www.lua.org/source/5.3/lobject.h.html#Udata),特別是['L_Umaxalign'](http://www.lua.org/源/ 5.3/llimits.h.html#L_Umaxalign)。後者還允許您更改該對齊。 – siffiejoe