Defines | Functions

# alloc_func.hpp File Reference

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

Go to the source code of this file.

## Defines
#define | AllocaM(T, num_elements)
| alloca() has to be called in the parent function, so define AllocaM() as a macro
## Functions
void NORETURN | MallocError (size_t size)
| Function to exit with an error message after malloc() or calloc() have failed.
void NORETURN | ReallocError (size_t size)
| Function to exit with an error message after realloc() have failed.
static void | CheckAllocationConstraints (size_t element_size, size_t num_elements)
| Checks whether allocating memory would overflow size_t.
template<typename T >
static void | CheckAllocationConstraints (size_t num_elements)
| Checks whether allocating memory would overflow size_t.
template<typename T >
static T * | MallocT (size_t num_elements)
| Simplified allocation function that allocates the specified number of elements of the given type.
template<typename T >
static T * | CallocT (size_t num_elements)
| Simplified allocation function that allocates the specified number of elements of the given type.
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.

## Detailed Description

Functions related to the allocation of memory.

Definition in file alloc_func.hpp.

## Define Documentation

#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 CmdBuildRailStation(), CmdBuildRailWaypoint(), TimetableWindow::DrawWidget(), FinalisePriceBaseMultipliers(), GenerateTownNameString(), LoadNewGRFSound(), CrashLogWindows::LogModules(), MakeBMPImage(), NetworkHTTPSocketHandler::NetworkHTTPSocketHandler(), ReadRecolourSprite(), ReadSpriteLayout(), and LanguageWriter::WriteLang().

## Function Documentation

template<typename T >

static T* CallocT | ( | size_t | num_elements | ) | `[inline, static]`

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:

  | T | the type of the variable(s) to allocation.

Parameters:

  | num_elements | the 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.

References MallocError().

template<typename T >

static void CheckAllocationConstraints | ( | size_t | num_elements | ) | `[inline, static]`

Checks whether allocating memory would overflow size_t.

Template Parameters:

  | T | Structure to allocate.

Parameters:

  | num_elements | Number of elements to allocate.

Definition at line 43 of file alloc_func.hpp.

References CheckAllocationConstraints().

static void CheckAllocationConstraints | ( | size_t | element_size,
|  | size_t | num_elements |
| ) |  |  | `[inline, static]`

Checks whether allocating memory would overflow size_t.

Parameters:

  | element_size | Size of the structure to allocate.
  | num_elements | Number of elements to allocate.

Definition at line 31 of file alloc_func.hpp.

References MallocError().

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

void NORETURN MallocError | ( | size_t | size | ) |

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

Parameters:

  | size | number of bytes we tried to allocate

Definition at line 18 of file alloc_func.cpp.

References error().

Referenced by CallocT(), CheckAllocationConstraints(), and MallocT().

template<typename T >

static T* MallocT | ( | size_t | num_elements | ) | `[inline, static]`

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:

  | T | the type of the variable(s) to allocation.

Parameters:

  | num_elements | the 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.

References MallocError().

void NORETURN ReallocError | ( | size_t | size | ) |

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

Parameters:

  | size | number of bytes we tried to allocate

Definition at line 27 of file alloc_func.cpp.

References error().

Referenced by ReallocT().

template<typename T >

static T* ReallocT | ( | T * | t_ptr,
|  | size_t | num_elements |
| ) |  |  | `[inline, static]`

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:

  | T | the type of the variable(s) to allocation.

Parameters:

  | t_ptr | the previous allocation to extend/shrink.
  | num_elements | the 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.

References free(), and ReallocError().

Referenced by AllocateSpecToStation(), SmallVector< RefitOption, 32 >::Append(), SmallVector< RefitOption, 32 >::Compact(), DeallocateSpecFromStation(), DEFINE_NEWGRF_CLASS_METHOD(), GamelogChange(), GetNewEngine(), IniLoadFile::LoadFromDisk(), TextfileWindow::LoadTextfile(), NetworkInitChatMessage(), NetworkReInitChatBoxSize(), SquirrelStd::require(), NetworkTCPSocketHandler::SendPacket(), StationChangeInfo(), and TranslateTTDPatchCodes().