# lua/lmem.h File Reference

`#include <stddef.h>`
`#include "llimits.h"`
`#include "lua.h"`
Include dependency graph for lmem.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Defines

#define | MEMERRMSG "not enough memory"
#define | luaM_reallocv(L, b, on, n, e)
#define | luaM_freemem(L, b, s) luaM_realloc_(L, (b), (s), 0)
#define | luaM_free(L, b) luaM_realloc_(L, (b), sizeof(*(b)), 0)
#define | luaM_freearray(L, b, n, t) luaM_reallocv(L, (b), n, 0, sizeof(t))
#define | luaM_malloc(L, t) luaM_realloc_(L, NULL, 0, (t))
#define | luaM_new(L, t) cast(t *, luaM_malloc(L, sizeof(t)))
#define | luaM_newvector(L, n, t) cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t)))
#define | luaM_growvector(L, v, nelems, size, t, limit, e)
#define | luaM_reallocvector(L, v, oldn, n, t) ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t))))

## Functions

LUAI_FUNC void * | luaM_realloc_ (lua_State *L, void *block, size_t oldsize, size_t size)
LUAI_FUNC void * | luaM_toobig (lua_State *L)
LUAI_FUNC void * | luaM_growaux_ (lua_State *L, void *block, int *size, size_t size_elem, int limit, const char *errormsg)

## Define Documentation

#define luaM_free | ( | L,
|  | b |  | ) | luaM_realloc_(L, (b), sizeof(*(b)), 0)

Definition at line 25 of file lmem.h.

Referenced by luaF_freeproto(), luaF_freeupval(), and luaH_free().

#define luaM_freearray | ( | L,
|  | b,
|  | n,
|  | t |  | ) | luaM_reallocv(L, (b), n, 0, sizeof(t))

Definition at line 26 of file lmem.h.

Referenced by close_state(), freestack(), luaF_freeproto(), luaH_free(), luaS_resize(), and resize().

#define luaM_freemem | ( | L,
|  | b,
|  | s |  | ) | luaM_realloc_(L, (b), (s), 0)

Definition at line 24 of file lmem.h.

Referenced by freeobj(), luaE_freethread(), and luaF_freeclosure().

#define luaM_growvector | ( | L,
|  | v,
|  | nelems,
|  | size,
|  | t,
|  | limit,
|  | e |  | ) |

Value:

    if ((nelems)+1 > (size)) \
                ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e)))

Definition at line 33 of file lmem.h.

Referenced by addk(), indexupvalue(), luaK_code(), pushclosure(), and registerlocalvar().

#define luaM_malloc | ( | L,
|  | t |  | ) | luaM_realloc_(L, NULL, 0, (t))

Definition at line 28 of file lmem.h.

Referenced by luaE_newthread(), luaF_newCclosure(), luaF_newLclosure(), luaS_newudata(), and newlstr().

#define luaM_new | ( | L,
|  | t |  | ) | cast(t *, luaM_malloc(L, sizeof(t)))

Definition at line 29 of file lmem.h.

Referenced by luaF_findupval(), luaF_newproto(), luaF_newupval(), and luaH_new().

#define luaM_newvector | ( | L,
|  | n,
|  | t |  | ) | cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t)))

Definition at line 30 of file lmem.h.

Referenced by LoadCode(), LoadConstants(), LoadDebug(), luaS_resize(), setnodevector(), and stack_init().

#define luaM_reallocv | ( | L,
|  | b,
|  | on,
|  | n,
|  | e |  | ) |

Value:

    ((cast(size_t, (n)+1) <= MAX_SIZET/(e)) ?  /* +1 to avoid warnings */ \
                    luaM_realloc_(L, (b), (on)*(e), (n)*(e)) : \
                    luaM_toobig(L))

Definition at line 19 of file lmem.h.

Referenced by luaM_growaux_().

#define luaM_reallocvector | ( | L,
|  | v,
|  | oldn,
|  | n,
|  | t |  | ) | ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t))))

Definition at line 37 of file lmem.h.

Referenced by close_func(), luaD_reallocCI(), luaD_reallocstack(), resize(), and setarrayvector().

#define MEMERRMSG "not enough memory"

Definition at line 16 of file lmem.h.

Referenced by f_luaopen(), and luaD_seterrorobj().

## Function Documentation

LUAI_FUNC void* luaM_growaux_ | ( | lua_State * | L,
|  | void * | block,
|  | int * | size,
|  | size_t | size_elem,
|  | int | limit,
|  | const char * | errormsg |
| ) |  |  |

Definition at line 46 of file lmem.c.

References luaG_runerror(), luaM_reallocv, and MINSIZEARRAY.

LUAI_FUNC void* luaM_realloc_ | ( | lua_State * | L,
|  | void * | block,
|  | size_t | oldsize,
|  | size_t | size |
| ) |  |  |

Definition at line 76 of file lmem.c.

References global_State::frealloc, G, lua_assert, luaD_throw(), global_State::totalbytes, and global_State::ud.

LUAI_FUNC void* luaM_toobig | ( | lua_State * | L | ) |

Definition at line 66 of file lmem.c.

References luaG_runerror().

Referenced by luaS_newudata(), and newlstr().