OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

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

## 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.

## Macro Definition 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(), convert_from_fs(), convert_to_fs(), TimetableWindow::DrawWidget(), FinalisePriceBaseMultipliers(), GenerateTownNameString(), HeightMapCurves(), LoadNewGRFSound(), 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().

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().

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().

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 20 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 29 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(), SmallMatrix< BaseEdge >::Compact(), DeallocateSpecFromStation(), GamelogChange(), GetNewEngine(), Gunzip(), IniLoadFile::LoadFromDisk(), TextfileWindow::LoadTextfile(), NetworkInitChatMessage(), NetworkReInitChatBoxSize(), SmallVector< RefitOption, 32 >::Resize(), NetworkTCPSocketHandler::SendPacket(), StationChangeInfo(), TranslateTTDPatchCodes(), and Xunzip().