lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Feb 21, 2009, at 10:29 AM, Bertrand Mansion wrote:

Is there something wrong with this code ?
Also, is there something wrong in using malloc/free in Lua modules ?

At first glance I see nothing wrong with the code, but it's been a while since I've dealt with this.

The reason for using lua_getallocf() instead of malloc/free is so that the Lua user's allocation function is used. The user can define an allocator that is more efficient for their operating system (esp. embedded systems which might have small amounts of memory), and this allocator might not use malloc/free or might malloc/free larger chunks at once to prevent memory fragmentation. By using lua_getallocf you can take advantage of those things.

In addition, running out of memory using the user's allocator function causes Lua to throw an out-of-memory error, which is catchable by pcall, etc. malloc/free would not normally do this without further programming.

(Lua's allocator function can be overwritten by the C API or by other modules with lua_setallocf.)

Bertrand Mansion