OpenTTD
Macros | Functions
alloc_func.hpp File Reference

Functions related to the allocation of memory. More...

Go to the source code of this file.

Macros

#define AllocaM(T, num_elements)
 alloca() has to be called in the parent function, so define AllocaM() as a macro More...
 

Functions

void NORETURN MallocError (size_t size)
 Function to exit with an error message after malloc() or calloc() have failed. More...
 
void NORETURN ReallocError (size_t size)
 Function to exit with an error message after realloc() have failed. More...
 
static void CheckAllocationConstraints (size_t element_size, size_t num_elements)
 Checks whether allocating memory would overflow size_t. More...
 
template<typename T >
static void CheckAllocationConstraints (size_t num_elements)
 Checks whether allocating memory would overflow size_t. More...
 
template<typename T >
static T * MallocT (size_t num_elements)
 Simplified allocation function that allocates the specified number of elements of the given type. More...
 
template<typename T >
static T * CallocT (size_t num_elements)
 Simplified allocation function that allocates the specified number of elements of the given type. More...
 
template<typename T >
static T * ReallocT (T *t_ptr, size_t num_elements)
 Simplified reallocation function that allocates the specified number of elements of the given type. More...
 

Detailed Description

Functions related to the allocation of memory.

Definition in file alloc_func.hpp.

Macro Definition Documentation

◆ AllocaM

#define AllocaM (   T,
  num_elements 
)
Value:
(CheckAllocationConstraints<T>(num_elements), \
(T*)alloca((num_elements) * sizeof(T)))

alloca() has to be called in the parent function, so define AllocaM() as a macro

Definition at line 134 of file alloc_func.hpp.

Referenced by convert_from_fs(), convert_to_fs(), ReadSpriteLayout(), and LanguageWriter::WriteLang().

Function Documentation

◆ CallocT()

template<typename T >
static T* CallocT ( size_t  num_elements)
inlinestatic

Simplified allocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type.

Note
throws an error when there is no memory anymore.
the memory contains all zero values.
Template Parameters
Tthe type of the variable(s) to allocation.
Parameters
num_elementsthe number of elements to allocate of the given type.
Returns
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 87 of file alloc_func.hpp.

◆ CheckAllocationConstraints() [1/2]

static void CheckAllocationConstraints ( size_t  element_size,
size_t  num_elements 
)
inlinestatic

Checks whether allocating memory would overflow size_t.

Parameters
element_sizeSize of the structure to allocate.
num_elementsNumber of elements to allocate.

Definition at line 31 of file alloc_func.hpp.

Referenced by CheckAllocationConstraints(), and Hash::Init().

◆ CheckAllocationConstraints() [2/2]

template<typename T >
static void CheckAllocationConstraints ( size_t  num_elements)
inlinestatic

Checks whether allocating memory would overflow size_t.

Template Parameters
TStructure to allocate.
Parameters
num_elementsNumber of elements to allocate.

Definition at line 43 of file alloc_func.hpp.

References CheckAllocationConstraints().

◆ MallocError()

void NORETURN MallocError ( size_t  size)

Function to exit with an error message after malloc() or calloc() have failed.

Parameters
sizenumber of bytes we tried to allocate

Definition at line 20 of file alloc_func.cpp.

References error().

◆ MallocT()

template<typename T >
static T* MallocT ( size_t  num_elements)
inlinestatic

Simplified allocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type.

Note
throws an error when there is no memory anymore.
the memory contains garbage data (i.e. possibly non-zero values).
Template Parameters
Tthe type of the variable(s) to allocation.
Parameters
num_elementsthe number of elements to allocate of the given type.
Returns
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 59 of file alloc_func.hpp.

◆ ReallocError()

void NORETURN ReallocError ( size_t  size)

Function to exit with an error message after realloc() have failed.

Parameters
sizenumber of bytes we tried to allocate

Definition at line 29 of file alloc_func.cpp.

References error().

◆ ReallocT()

template<typename T >
static T* ReallocT ( T *  t_ptr,
size_t  num_elements 
)
inlinestatic

Simplified reallocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type. It extends/shrinks the memory allocation given in t_ptr.

Note
throws an error when there is no memory anymore.
the pointer to the data may change, but the data will remain valid.
Template Parameters
Tthe type of the variable(s) to allocation.
Parameters
t_ptrthe previous allocation to extend/shrink.
num_elementsthe number of elements to allocate of the given type.
Returns
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 113 of file alloc_func.hpp.

Referenced by AllocateSpecToStation(), SmallMatrix< BaseEdge >::Compact(), DEFINE_NEWGRF_CLASS_METHOD(), GamelogChange(), Gunzip(), TextfileWindow::LoadTextfile(), NetworkInitChatMessage(), and NetworkReInitChatBoxSize().