Detailed Description
memory allocation routines
Definition in file memory.c.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <stdint.h>
#include "blockmemshell/memory.h"
#include "scip/rbtree.h"
Go to the source code of this file.
Data Structures | |
struct | BMS_BufMem |
Macros | |
#define | debugMessage while( FALSE ) printf |
#define | errorMessage printf |
#define | printErrorHeader(f, l) printf("[%s:%d] ERROR: ", f, l) |
#define | printError printf |
#define | warningMessage printf |
#define | printInfo printf |
#define | LONGINT_FORMAT SCIP_LONGINT_FORMAT |
#define | MAXMEMSIZE SCIP_MAXMEMSIZE |
#define | CHKHASH_POWER 10 |
#define | CHKHASH_SIZE (1<<CHKHASH_POWER) |
#define | CHUNKLENGTH_MIN 1024 |
#define | CHUNKLENGTH_MAX 1048576 |
#define | STORESIZE_MAX 8192 |
#define | GARBAGE_SIZE 256 |
#define | ALIGNMENT (sizeof(FREELIST)) |
#define | CHUNK_LT(ptr, chunk) ptr < chunk->store |
#define | CHUNK_GT(ptr, chunk) ptr >= chunk->storeend |
#define | checkChunk(chunk) |
#define | checkChkmem(chkmem) |
#define | checkBlkmem(blkmem) |
Typedefs | |
typedef struct Freelist | FREELIST |
typedef struct Chunk | CHUNK |
Functions | |
size_t | BMSgetPointerSize_call (const void *ptr) |
void | BMSdisplayMemory_call (void) |
void | BMScheckEmptyMemory_call (void) |
long long | BMSgetMemoryUsed_call (void) |
void * | BMSallocClearMemory_call (size_t num, size_t typesize, const char *filename, int line) |
void * | BMSallocMemory_call (size_t size, const char *filename, int line) |
void * | BMSallocMemoryArray_call (size_t num, size_t typesize, const char *filename, int line) |
void * | BMSreallocMemory_call (void *ptr, size_t size, const char *filename, int line) |
void * | BMSreallocMemoryArray_call (void *ptr, size_t num, size_t typesize, const char *filename, int line) |
void | BMSclearMemory_call (void *ptr, size_t size) |
void | BMScopyMemory_call (void *ptr, const void *source, size_t size) |
void | BMSmoveMemory_call (void *ptr, const void *source, size_t size) |
void * | BMSduplicateMemory_call (const void *source, size_t size, const char *filename, int line) |
void * | BMSduplicateMemoryArray_call (const void *source, size_t num, size_t typesize, const char *filename, int line) |
void | BMSfreeMemory_call (void **ptr, const char *filename, int line) |
void | BMSfreeMemoryNull_call (void **ptr, const char *filename, int line) |
static | SCIP_DEF_RBTREE_FIND (rbTreeFindChunk, const void *, CHUNK, CHUNK_LT, CHUNK_GT) |
void | BMSalignMemsize (size_t *size) |
int | BMSisAligned (size_t size) |
static int | isPtrInChunk (const CHUNK *chunk, const void *ptr) |
static CHUNK * | findChunk (const BMS_CHKMEM *chkmem, const void *ptr) |
static int | isPtrInChkmem (const BMS_CHKMEM *chkmem, const void *ptr) |
static int | linkChunk (BMS_CHKMEM *chkmem, CHUNK *chunk) |
static void | unlinkChunk (CHUNK *chunk) |
static void | linkEagerChunk (BMS_CHKMEM *chkmem, CHUNK *chunk) |
static void | unlinkEagerChunk (CHUNK *chunk) |
static int | createChunk (BMS_CHKMEM *chkmem, long long *memsize) |
static void | destroyChunk (CHUNK *chunk, long long *memsize) |
static void | freeChunk (CHUNK *chunk, long long *memsize) |
static void * | allocChunkElement (CHUNK *chunk) |
static void | freeChunkElement (CHUNK *chunk, void *ptr) |
static BMS_CHKMEM * | createChkmem (int size, int initchunksize, int garbagefactor, long long *memsize) |
static void | clearChkmem (BMS_CHKMEM *chkmem, long long *memsize) |
static void | destroyChkmem (BMS_CHKMEM **chkmem, long long *memsize) |
static void * | allocChkmemElement (BMS_CHKMEM *chkmem, long long *memsize) |
static void | garbagecollectChkmem (BMS_CHKMEM *chkmem, long long *memsize) |
static void | freeChkmemElement (BMS_CHKMEM *chkmem, void *ptr, long long *memsize, const char *filename, int line) |
BMS_CHKMEM * | BMScreateChunkMemory_call (size_t size, int initchunksize, int garbagefactor, const char *filename, int line) |
void | BMSclearChunkMemory_call (BMS_CHKMEM *chkmem, const char *filename, int line) |
void | BMSdestroyChunkMemory_call (BMS_CHKMEM **chkmem, const char *filename, int line) |
void * | BMSallocChunkMemory_call (BMS_CHKMEM *chkmem, size_t size, const char *filename, int line) |
void * | BMSduplicateChunkMemory_call (BMS_CHKMEM *chkmem, const void *source, size_t size, const char *filename, int line) |
void | BMSfreeChunkMemory_call (BMS_CHKMEM *chkmem, void **ptr, size_t size, const char *filename, int line) |
void | BMSfreeChunkMemoryNull_call (BMS_CHKMEM *chkmem, void **ptr, size_t size, const char *filename, int line) |
void | BMSgarbagecollectChunkMemory_call (BMS_CHKMEM *chkmem) |
long long | BMSgetChunkMemoryUsed_call (const BMS_CHKMEM *chkmem) |
static BMS_CHKMEM * | findChkmem (const BMS_BLKMEM *blkmem, const void *ptr) |
static int | getHashNumber (int size) |
BMS_BLKMEM * | BMScreateBlockMemory_call (int initchunksize, int garbagefactor, const char *filename, int line) |
void | BMSclearBlockMemory_call (BMS_BLKMEM *blkmem, const char *filename, int line) |
void | BMSdestroyBlockMemory_call (BMS_BLKMEM **blkmem, const char *filename, int line) |
static INLINE void * | BMSallocBlockMemory_work (BMS_BLKMEM *blkmem, size_t size, const char *filename, int line) |
void * | BMSallocBlockMemory_call (BMS_BLKMEM *blkmem, size_t size, const char *filename, int line) |
void * | BMSallocBlockMemoryArray_call (BMS_BLKMEM *blkmem, size_t num, size_t typesize, const char *filename, int line) |
void * | BMSallocClearBlockMemoryArray_call (BMS_BLKMEM *blkmem, size_t num, size_t typesize, const char *filename, int line) |
void * | BMSreallocBlockMemory_call (BMS_BLKMEM *blkmem, void *ptr, size_t oldsize, size_t newsize, const char *filename, int line) |
void * | BMSreallocBlockMemoryArray_call (BMS_BLKMEM *blkmem, void *ptr, size_t oldnum, size_t newnum, size_t typesize, const char *filename, int line) |
void * | BMSduplicateBlockMemory_call (BMS_BLKMEM *blkmem, const void *source, size_t size, const char *filename, int line) |
void * | BMSduplicateBlockMemoryArray_call (BMS_BLKMEM *blkmem, const void *source, size_t num, size_t typesize, const char *filename, int line) |
static INLINE void | BMSfreeBlockMemory_work (BMS_BLKMEM *blkmem, void **ptr, size_t size, const char *filename, int line) |
void | BMSfreeBlockMemory_call (BMS_BLKMEM *blkmem, void **ptr, size_t size, const char *filename, int line) |
void | BMSfreeBlockMemoryNull_call (BMS_BLKMEM *blkmem, void **ptr, size_t size, const char *filename, int line) |
void | BMSgarbagecollectBlockMemory_call (BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryAllocated_call (const BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryUsed_call (const BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryUnused_call (const BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryUsedMax_call (const BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryUnusedMax_call (const BMS_BLKMEM *blkmem) |
long long | BMSgetBlockMemoryAllocatedMax_call (const BMS_BLKMEM *blkmem) |
size_t | BMSgetBlockPointerSize_call (const BMS_BLKMEM *blkmem, const void *ptr) |
void | BMSdisplayBlockMemory_call (const BMS_BLKMEM *blkmem) |
long long | BMScheckEmptyBlockMemory_call (const BMS_BLKMEM *blkmem) |
BMS_BUFMEM * | BMScreateBufferMemory_call (double arraygrowfac, int arraygrowinit, unsigned int clean, const char *filename, int line) |
void | BMSdestroyBufferMemory_call (BMS_BUFMEM **buffer, const char *filename, int line) |
void | BMSsetBufferMemoryArraygrowfac (BMS_BUFMEM *buffer, double arraygrowfac) |
void | BMSsetBufferMemoryArraygrowinit (BMS_BUFMEM *buffer, int arraygrowinit) |
static size_t | calcMemoryGrowSize (size_t initsize, SCIP_Real growfac, size_t num) |
static INLINE void * | BMSallocBufferMemory_work (BMS_BUFMEM *buffer, size_t size, const char *filename, int line) |
void * | BMSallocBufferMemory_call (BMS_BUFMEM *buffer, size_t size, const char *filename, int line) |
void * | BMSallocBufferMemoryArray_call (BMS_BUFMEM *buffer, size_t num, size_t typesize, const char *filename, int line) |
void * | BMSallocClearBufferMemoryArray_call (BMS_BUFMEM *buffer, size_t num, size_t typesize, const char *filename, int line) |
static INLINE void * | BMSreallocBufferMemory_work (BMS_BUFMEM *buffer, void *ptr, size_t size, const char *filename, int line) |
void * | BMSreallocBufferMemory_call (BMS_BUFMEM *buffer, void *ptr, size_t size, const char *filename, int line) |
void * | BMSreallocBufferMemoryArray_call (BMS_BUFMEM *buffer, void *ptr, size_t num, size_t typesize, const char *filename, int line) |
void * | BMSduplicateBufferMemory_call (BMS_BUFMEM *buffer, const void *source, size_t size, const char *filename, int line) |
void * | BMSduplicateBufferMemoryArray_call (BMS_BUFMEM *buffer, const void *source, size_t num, size_t typesize, const char *filename, int line) |
static INLINE void | BMSfreeBufferMemory_work (BMS_BUFMEM *buffer, void **ptr, const char *filename, int line) |
void | BMSfreeBufferMemory_call (BMS_BUFMEM *buffer, void **ptr, const char *filename, int line) |
void | BMSfreeBufferMemoryNull_call (BMS_BUFMEM *buffer, void **ptr, const char *filename, int line) |
size_t | BMSgetNUsedBufferMemory (BMS_BUFMEM *buffer) |
long long | BMSgetBufferMemoryUsed (const BMS_BUFMEM *buffer) |
void | BMSprintBufferMemory (BMS_BUFMEM *buffer) |
Macro Definition Documentation
◆ debugMessage
#define debugMessage while( FALSE ) printf |
Definition at line 60 of file memory.c.
Referenced by allocChunkElement(), BMSallocBlockMemory_work(), BMSallocBufferMemory_work(), BMSallocChunkMemory_call(), BMSallocClearMemory_call(), BMSallocMemory_call(), BMSallocMemoryArray_call(), BMSclearChunkMemory_call(), BMScreateChunkMemory_call(), BMSdestroyChunkMemory_call(), BMSfreeBlockMemory_work(), BMSfreeBufferMemory_work(), BMSfreeChunkMemory_call(), BMSfreeChunkMemoryNull_call(), BMSgarbagecollectChunkMemory_call(), BMSreallocBufferMemory_work(), createChunk(), destroyChunk(), freeChunk(), freeChunkElement(), garbagecollectChkmem(), linkChunk(), and unlinkChunk().
◆ errorMessage
#define errorMessage printf |
Definition at line 61 of file memory.c.
Referenced by BMScheckEmptyBlockMemory_call(), and garbagecollectChkmem().
◆ printErrorHeader
#define printErrorHeader | ( | f, | |
l | |||
) | printf("[%s:%d] ERROR: ", f, l) |
Definition at line 62 of file memory.c.
Referenced by BMSallocBlockMemory_call(), BMSallocBlockMemory_work(), BMSallocBlockMemoryArray_call(), BMSallocBufferMemory_call(), BMSallocBufferMemory_work(), BMSallocBufferMemoryArray_call(), BMSallocChunkMemory_call(), BMSallocClearMemory_call(), BMSallocMemory_call(), BMSallocMemoryArray_call(), BMSclearBlockMemory_call(), BMSclearChunkMemory_call(), BMScreateBlockMemory_call(), BMScreateBufferMemory_call(), BMScreateChunkMemory_call(), BMSdestroyBlockMemory_call(), BMSdestroyBufferMemory_call(), BMSdestroyChunkMemory_call(), BMSfreeBlockMemory_call(), BMSfreeBlockMemory_work(), BMSfreeBufferMemory_call(), BMSfreeBufferMemory_work(), BMSfreeChunkMemory_call(), BMSfreeMemory_call(), BMSreallocBlockMemory_call(), BMSreallocBlockMemoryArray_call(), BMSreallocBufferMemory_call(), BMSreallocBufferMemory_work(), BMSreallocBufferMemoryArray_call(), BMSreallocMemory_call(), BMSreallocMemoryArray_call(), and freeChkmemElement().
◆ printError
#define printError printf |
Definition at line 63 of file memory.c.
Referenced by BMSallocBlockMemory_call(), BMSallocBlockMemory_work(), BMSallocBlockMemoryArray_call(), BMSallocBufferMemory_call(), BMSallocBufferMemory_work(), BMSallocBufferMemoryArray_call(), BMSallocChunkMemory_call(), BMSallocClearMemory_call(), BMSallocMemory_call(), BMSallocMemoryArray_call(), BMSclearBlockMemory_call(), BMSclearChunkMemory_call(), BMScreateBlockMemory_call(), BMScreateBufferMemory_call(), BMScreateChunkMemory_call(), BMSdestroyBlockMemory_call(), BMSdestroyBufferMemory_call(), BMSdestroyChunkMemory_call(), BMSfreeBlockMemory_call(), BMSfreeBlockMemory_work(), BMSfreeBufferMemory_call(), BMSfreeBufferMemory_work(), BMSfreeChunkMemory_call(), BMSfreeMemory_call(), BMSreallocBlockMemory_call(), BMSreallocBlockMemoryArray_call(), BMSreallocBufferMemory_call(), BMSreallocBufferMemory_work(), BMSreallocBufferMemoryArray_call(), BMSreallocMemory_call(), BMSreallocMemoryArray_call(), and freeChkmemElement().
◆ warningMessage
#define warningMessage printf |
Definition at line 66 of file memory.c.
Referenced by BMSfreeBufferMemory_work().
◆ printInfo
#define printInfo printf |
Definition at line 67 of file memory.c.
Referenced by BMScheckEmptyMemory_call(), BMSdisplayBlockMemory_call(), and BMSdisplayMemory_call().
◆ LONGINT_FORMAT
#define LONGINT_FORMAT SCIP_LONGINT_FORMAT |
Definition at line 86 of file memory.c.
Referenced by BMScheckEmptyBlockMemory_call(), and BMSdisplayBlockMemory_call().
◆ MAXMEMSIZE
#define MAXMEMSIZE SCIP_MAXMEMSIZE |
Definition at line 93 of file memory.c.
Referenced by BMSallocBlockMemory_call(), BMSallocBlockMemoryArray_call(), BMSallocBufferMemory_call(), BMSallocBufferMemoryArray_call(), BMSallocClearMemory_call(), BMSallocMemory_call(), BMSallocMemoryArray_call(), BMSreallocBlockMemory_call(), BMSreallocBlockMemoryArray_call(), BMSreallocBufferMemory_call(), BMSreallocBufferMemoryArray_call(), BMSreallocMemory_call(), BMSreallocMemoryArray_call(), and createChunk().
◆ CHKHASH_POWER
#define CHKHASH_POWER 10 |
power for size of chunk block hash table
Definition at line 651 of file memory.c.
Referenced by getHashNumber().
◆ CHKHASH_SIZE
#define CHKHASH_SIZE (1<<CHKHASH_POWER) |
size of chunk block hash table is 2^CHKHASH_POWER
Definition at line 652 of file memory.c.
Referenced by BMScheckEmptyBlockMemory_call(), BMSclearBlockMemory_call(), BMScreateBlockMemory_call(), BMSdisplayBlockMemory_call(), BMSgarbagecollectBlockMemory_call(), BMSgetChunkMemoryUsed_call(), and findChkmem().
◆ CHUNKLENGTH_MIN
#define CHUNKLENGTH_MIN 1024 |
minimal size of a chunk (in bytes)
Definition at line 679 of file memory.c.
Referenced by createChunk().
◆ CHUNKLENGTH_MAX
#define CHUNKLENGTH_MAX 1048576 |
maximal size of a chunk (in bytes)
Definition at line 680 of file memory.c.
Referenced by createChunk().
◆ STORESIZE_MAX
#define STORESIZE_MAX 8192 |
maximal number of elements in one chunk
Definition at line 681 of file memory.c.
Referenced by createChunk().
◆ GARBAGE_SIZE
#define GARBAGE_SIZE 256 |
size of lazy free list to start garbage collection
Definition at line 682 of file memory.c.
Referenced by freeChkmemElement().
◆ ALIGNMENT
#define ALIGNMENT (sizeof(FREELIST)) |
minimal alignment of chunks
Definition at line 683 of file memory.c.
Referenced by BMSalignMemsize(), BMSisAligned(), and SCIP_DEF_RBTREE_FIND().
◆ CHUNK_LT
◆ CHUNK_GT
◆ checkChunk
#define checkChunk | ( | chunk | ) |
Definition at line 911 of file memory.c.
Referenced by allocChunkElement(), freeChunkElement(), and isPtrInChkmem().
◆ checkChkmem
#define checkChkmem | ( | chkmem | ) |
Definition at line 912 of file memory.c.
Referenced by allocChkmemElement(), BMSallocChunkMemory_call(), BMSfreeChunkMemory_call(), BMSfreeChunkMemoryNull_call(), BMSgetChunkMemoryUsed_call(), createChunk(), freeChkmemElement(), garbagecollectChkmem(), and isPtrInChkmem().
◆ checkBlkmem
#define checkBlkmem | ( | blkmem | ) |
Definition at line 1675 of file memory.c.
Referenced by BMSallocBlockMemory_work(), BMSfreeBlockMemory_call(), BMSfreeBlockMemory_work(), BMSfreeBlockMemoryNull_call(), BMSgarbagecollectBlockMemory_call(), and BMSgetChunkMemoryUsed_call().
Typedef Documentation
◆ FREELIST
typedef struct Freelist FREELIST |
◆ CHUNK
Function Documentation
◆ BMSgetPointerSize_call()
size_t BMSgetPointerSize_call | ( | const void * | ptr | ) |
◆ BMSdisplayMemory_call()
void BMSdisplayMemory_call | ( | void | ) |
◆ BMScheckEmptyMemory_call()
void BMScheckEmptyMemory_call | ( | void | ) |
◆ BMSgetMemoryUsed_call()
long long BMSgetMemoryUsed_call | ( | void | ) |
◆ BMSallocClearMemory_call()
void* BMSallocClearMemory_call | ( | size_t | num, |
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates array and initializes it with 0; returns NULL if memory allocation failed
- Parameters
-
num number of memory element to allocate typesize size of one memory element to allocate filename source file where the allocation is performed line line number in source file where the allocation is performed
Definition at line 320 of file memory.c.
References debugMessage, MAX, MAXMEMSIZE, NULL, printError, and printErrorHeader.
◆ BMSallocMemory_call()
void* BMSallocMemory_call | ( | size_t | size, |
const char * | filename, | ||
int | line | ||
) |
allocates memory; returns NULL if memory allocation failed
- Parameters
-
size size of memory element to allocate filename source file where the allocation is performed line line number in source file where the allocation is performed
Definition at line 361 of file memory.c.
References debugMessage, MAX, MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSduplicateMemory_call().
◆ BMSallocMemoryArray_call()
void* BMSallocMemoryArray_call | ( | size_t | num, |
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates array; returns NULL if memory allocation failed
- Parameters
-
num number of components of array to allocate typesize size of each component filename source file where the allocation is performed line line number in source file where the allocation is performed
Definition at line 397 of file memory.c.
References debugMessage, MAX, MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSduplicateMemoryArray_call().
◆ BMSreallocMemory_call()
void* BMSreallocMemory_call | ( | void * | ptr, |
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates memory; returns NULL if memory allocation failed
- Parameters
-
ptr pointer to memory to reallocate size new size of memory element filename source file where the reallocation is performed line line number in source file where the reallocation is performed
Definition at line 437 of file memory.c.
References MAX, MAXMEMSIZE, NULL, printError, and printErrorHeader.
◆ BMSreallocMemoryArray_call()
void* BMSreallocMemoryArray_call | ( | void * | ptr, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
reallocates array; returns NULL if memory allocation failed
- Parameters
-
ptr pointer to memory to reallocate num number of components of array to allocate typesize size of each component filename source file where the reallocation is performed line line number in source file where the reallocation is performed
Definition at line 477 of file memory.c.
References MAX, MAXMEMSIZE, NULL, printError, and printErrorHeader.
◆ BMSclearMemory_call()
void BMSclearMemory_call | ( | void * | ptr, |
size_t | size | ||
) |
◆ BMScopyMemory_call()
void BMScopyMemory_call | ( | void * | ptr, |
const void * | source, | ||
size_t | size | ||
) |
copies the contents of one memory element into another memory element
- Parameters
-
ptr pointer to target memory element source pointer to source memory element size size of memory element to copy
Definition at line 533 of file memory.c.
References NULL.
Referenced by BMSduplicateMemory_call(), and BMSduplicateMemoryArray_call().
◆ BMSmoveMemory_call()
void BMSmoveMemory_call | ( | void * | ptr, |
const void * | source, | ||
size_t | size | ||
) |
moves the contents of one memory element into another memory element, should be used if both elements overlap, otherwise BMScopyMemory is faster
- Parameters
-
ptr pointer to target memory element source pointer to source memory element size size of memory element to copy
Definition at line 550 of file memory.c.
References NULL.
◆ BMSduplicateMemory_call()
void* BMSduplicateMemory_call | ( | const void * | source, |
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates memory and copies the contents of the given memory element into the new memory element
- Parameters
-
source pointer to source memory element size size of memory element to copy filename source file where the duplication is performed line line number in source file where the duplication is performed
Definition at line 565 of file memory.c.
References BMSallocMemory_call(), BMScopyMemory_call(), and NULL.
◆ BMSduplicateMemoryArray_call()
void* BMSduplicateMemoryArray_call | ( | const void * | source, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates array and copies the contents of the given source array into the new array
- Parameters
-
source pointer to source memory element num number of components of array to allocate typesize size of each component filename source file where the duplication is performed line line number in source file where the duplication is performed
Definition at line 584 of file memory.c.
References BMSallocMemoryArray_call(), BMScopyMemory_call(), and NULL.
◆ BMSfreeMemory_call()
void BMSfreeMemory_call | ( | void ** | ptr, |
const char * | filename, | ||
int | line | ||
) |
frees an allocated memory element and sets pointer to NULL
- Parameters
-
ptr pointer to pointer to memory element filename source file where the deallocation is performed line line number in source file where the deallocation is performed
Definition at line 604 of file memory.c.
References NULL, printError, and printErrorHeader.
◆ BMSfreeMemoryNull_call()
void BMSfreeMemoryNull_call | ( | void ** | ptr, |
const char * | filename, | ||
int | line | ||
) |
frees an allocated memory element if pointer is not NULL and sets pointer to NULL
- Parameters
-
ptr pointer to pointer to memory element filename source file where the deallocation is performed line line number in source file where the deallocation is performed
Definition at line 627 of file memory.c.
References NULL.
◆ SCIP_DEF_RBTREE_FIND()
◆ BMSalignMemsize()
void BMSalignMemsize | ( | size_t * | size | ) |
◆ BMSisAligned()
int BMSisAligned | ( | size_t | size | ) |
checks whether the given size meets the alignment conditions for chunk and block memory
- Parameters
-
size size to check for alignment
Definition at line 763 of file memory.c.
References ALIGNMENT.
Referenced by createChkmem(), createChunk(), and getHashNumber().
◆ isPtrInChunk()
|
static |
checks, if the given pointer belongs to the given chunk
- Parameters
-
chunk memory chunk ptr pointer
Definition at line 774 of file memory.c.
References NULL.
Referenced by freeChunkElement(), and isPtrInChkmem().
◆ findChunk()
|
static |
given a pointer, finds the chunk this pointer points to in the chunk array of the given chunk block; binary search is used; returns NULL if the pointer does not belong to the chunk block
- Parameters
-
chkmem chunk block ptr pointer
Definition at line 791 of file memory.c.
References NULL.
Referenced by garbagecollectChkmem(), and isPtrInChkmem().
◆ isPtrInChkmem()
|
static |
checks, if a pointer belongs to a chunk of the given chunk block
- Parameters
-
chkmem chunk block ptr pointer
Definition at line 810 of file memory.c.
References checkChkmem, checkChunk, findChunk(), FOR_EACH_NODE, isPtrInChunk(), and NULL.
Referenced by findChkmem(), and freeChkmemElement().
◆ linkChunk()
|
static |
links chunk to the block's chunk array, sort it by store pointer; returns TRUE if successful, FALSE otherwise
- Parameters
-
chkmem chunk block chunk memory chunk
Definition at line 920 of file memory.c.
References debugMessage, NULL, SCIPrbtreeInsert, and TRUE.
Referenced by createChunk().
◆ unlinkChunk()
|
static |
unlinks chunk from the chunk block's chunk list
- Parameters
-
chunk memory chunk
Definition at line 948 of file memory.c.
References debugMessage, NULL, and SCIPrbtreeDelete.
Referenced by freeChunk().
◆ linkEagerChunk()
|
static |
links chunk to the chunk block's eager chunk list
- Parameters
-
chkmem chunk block chunk memory chunk
Definition at line 975 of file memory.c.
References NULL.
Referenced by freeChunkElement().
◆ unlinkEagerChunk()
|
static |
unlinks chunk from the chunk block's eager chunk list
- Parameters
-
chunk memory chunk
Definition at line 996 of file memory.c.
References NULL.
Referenced by allocChunkElement(), and freeChunk().
◆ createChunk()
|
static |
creates a new memory chunk in the given chunk block and adds memory elements to the lazy free list; returns TRUE if successful, FALSE otherwise
- Parameters
-
chkmem chunk block memsize pointer to total size of allocated memory (or NULL)
Definition at line 1021 of file memory.c.
References BMSallocMemorySize, BMSisAligned(), checkChkmem, CHUNKLENGTH_MAX, CHUNKLENGTH_MIN, debugMessage, FALSE, linkChunk(), MAX, MAXMEMSIZE, MIN, NULL, and STORESIZE_MAX.
Referenced by allocChkmemElement().
◆ destroyChunk()
|
static |
destroys a chunk without updating the chunk lists
- Parameters
-
chunk memory chunk memsize pointer to total size of allocated memory (or NULL)
Definition at line 1096 of file memory.c.
References BMSfreeMemory, debugMessage, and NULL.
Referenced by freeChunk().
◆ freeChunk()
|
static |
removes a completely unused chunk, i.e. a chunk with all elements in the eager free list
- Parameters
-
chunk memory chunk memsize pointer to total size of allocated memory (or NULL)
Definition at line 1114 of file memory.c.
References debugMessage, destroyChunk(), NULL, unlinkChunk(), and unlinkEagerChunk().
Referenced by garbagecollectChkmem().
◆ allocChunkElement()
|
static |
returns an element of the eager free list and removes it from the list
- Parameters
-
chunk memory chunk
Definition at line 1145 of file memory.c.
References checkChunk, debugMessage, NULL, and unlinkEagerChunk().
Referenced by allocChkmemElement().
◆ freeChunkElement()
|
static |
puts given pointer into the eager free list and adds the chunk to the eager list of its chunk block, if necessary
- Parameters
-
chunk memory chunk ptr pointer
Definition at line 1182 of file memory.c.
References checkChunk, debugMessage, isPtrInChunk(), linkEagerChunk(), and NULL.
Referenced by garbagecollectChkmem().
◆ createChkmem()
|
static |
creates a new chunk block data structure
- Parameters
-
size element size of the chunk block initchunksize number of elements in the first chunk of the chunk block garbagefactor garbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection) memsize pointer to total size of allocated memory (or NULL)
Definition at line 1211 of file memory.c.
References BMSallocMemory, BMSisAligned(), and NULL.
Referenced by BMSallocBlockMemory_work(), and BMScreateChunkMemory_call().
◆ clearChkmem()
|
static |
destroys all chunks of the chunk block, but keeps the chunk block header structure
- Parameters
-
chkmem chunk block memsize pointer to total size of allocated memory (or NULL)
Definition at line 1255 of file memory.c.
References FOR_EACH_NODE, and NULL.
Referenced by BMSclearChunkMemory_call(), destroyChkmem(), and garbagecollectChkmem().
◆ destroyChkmem()
|
static |
deletes chunk block and frees all associated memory chunks
- Parameters
-
chkmem pointer to chunk block memsize pointer to total size of allocated memory (or NULL)
Definition at line 1280 of file memory.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, clearChkmem(), and NULL.
Referenced by BMSclearBlockMemory_call(), BMSdestroyChunkMemory_call(), and BMSgarbagecollectBlockMemory_call().
◆ allocChkmemElement()
|
static |
allocates a new memory element from the chunk block
- Parameters
-
chkmem chunk block memsize pointer to total size of allocated memory (or NULL)
Definition at line 1302 of file memory.c.
References allocChunkElement(), checkChkmem, createChunk(), and NULL.
Referenced by BMSallocBlockMemory_work(), and BMSallocChunkMemory_call().
◆ garbagecollectChkmem()
|
static |
sorts the lazy free list of the chunk block into the eager free lists of the chunks, and removes completely unused chunks
- Parameters
-
chkmem chunk block memsize pointer to total size of allocated memory (or NULL)
Definition at line 1342 of file memory.c.
References checkChkmem, clearChkmem(), debugMessage, errorMessage, findChunk(), freeChunk(), freeChunkElement(), and NULL.
Referenced by BMSgarbagecollectBlockMemory_call(), BMSgarbagecollectChunkMemory_call(), and freeChkmemElement().
◆ freeChkmemElement()
|
static |
frees a memory element and returns it to the lazy freelist of the chunk block
- Parameters
-
chkmem chunk block ptr memory element memsize pointer to total size of allocated memory (or NULL) filename source file of the function call line line number in source file of the function call
Definition at line 1410 of file memory.c.
References checkChkmem, GARBAGE_SIZE, garbagecollectChkmem(), isPtrInChkmem(), NULL, printError, and printErrorHeader.
Referenced by BMSfreeBlockMemory_work(), BMSfreeChunkMemory_call(), and BMSfreeChunkMemoryNull_call().
◆ BMScreateChunkMemory_call()
BMS_CHKMEM* BMScreateChunkMemory_call | ( | size_t | size, |
int | initchunksize, | ||
int | garbagefactor, | ||
const char * | filename, | ||
int | line | ||
) |
creates a new chunk block data structure
- Parameters
-
size element size of the chunk block initchunksize number of elements in the first chunk of the chunk block garbagefactor garbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection) filename source file of the function call line line number in source file of the function call
Definition at line 1447 of file memory.c.
References createChkmem(), debugMessage, NULL, printError, and printErrorHeader.
◆ BMSclearChunkMemory_call()
void BMSclearChunkMemory_call | ( | BMS_CHKMEM * | chkmem, |
const char * | filename, | ||
int | line | ||
) |
clears a chunk block data structure
- Parameters
-
chkmem chunk block filename source file of the function call line line number in source file of the function call
Definition at line 1471 of file memory.c.
References clearChkmem(), debugMessage, NULL, printError, and printErrorHeader.
◆ BMSdestroyChunkMemory_call()
void BMSdestroyChunkMemory_call | ( | BMS_CHKMEM ** | chkmem, |
const char * | filename, | ||
int | line | ||
) |
destroys and frees a chunk block data structure
- Parameters
-
chkmem pointer to chunk block filename source file of the function call line line number in source file of the function call
Definition at line 1489 of file memory.c.
References debugMessage, destroyChkmem(), NULL, printError, and printErrorHeader.
◆ BMSallocChunkMemory_call()
void* BMSallocChunkMemory_call | ( | BMS_CHKMEM * | chkmem, |
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates a memory element of the given chunk block
- Parameters
-
chkmem chunk block size size of memory element to allocate (only needed for sanity check) filename source file of the function call line line number in source file of the function call
Definition at line 1509 of file memory.c.
References allocChkmemElement(), checkChkmem, debugMessage, NULL, printError, and printErrorHeader.
Referenced by BMSduplicateChunkMemory_call().
◆ BMSduplicateChunkMemory_call()
void* BMSduplicateChunkMemory_call | ( | BMS_CHKMEM * | chkmem, |
const void * | source, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
duplicates a given memory element by allocating a new element of the same chunk block and copying the data
- Parameters
-
chkmem chunk block source source memory element size size of memory element to allocate (only needed for sanity check) filename source file of the function call line line number in source file of the function call
Definition at line 1536 of file memory.c.
References BMSallocChunkMemory_call(), BMScopyMemorySize, and NULL.
◆ BMSfreeChunkMemory_call()
void BMSfreeChunkMemory_call | ( | BMS_CHKMEM * | chkmem, |
void ** | ptr, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
frees a memory element of the given chunk block and sets pointer to NULL
- Parameters
-
chkmem chunk block ptr pointer to pointer to memory element to free size size of memory element to allocate (only needed for sanity check) filename source file of the function call line line number in source file of the function call
Definition at line 1558 of file memory.c.
References checkChkmem, debugMessage, freeChkmemElement(), NULL, printError, and printErrorHeader.
◆ BMSfreeChunkMemoryNull_call()
void BMSfreeChunkMemoryNull_call | ( | BMS_CHKMEM * | chkmem, |
void ** | ptr, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
frees a memory element of the given chunk block if pointer is not NULL and sets pointer to NULL
- Parameters
-
chkmem chunk block ptr pointer to pointer to memory element to free size size of memory element to allocate (only needed for sanity check) filename source file of the function call line line number in source file of the function call
Definition at line 1587 of file memory.c.
References checkChkmem, debugMessage, freeChkmemElement(), and NULL.
◆ BMSgarbagecollectChunkMemory_call()
void BMSgarbagecollectChunkMemory_call | ( | BMS_CHKMEM * | chkmem | ) |
calls garbage collection of chunk block and frees chunks without allocated memory elements
- Parameters
-
chkmem chunk block
Definition at line 1611 of file memory.c.
References debugMessage, garbagecollectChkmem(), and NULL.
◆ BMSgetChunkMemoryUsed_call()
long long BMSgetChunkMemoryUsed_call | ( | const BMS_CHKMEM * | chkmem | ) |
returns the number of allocated bytes in the chunk block
- Parameters
-
chkmem chunk block
Definition at line 1621 of file memory.c.
References checkBlkmem, checkChkmem, CHKHASH_SIZE, and NULL.
◆ findChkmem()
|
static |
finds the chunk block, to whick the given pointer belongs to
This could be done by selecting the chunk block of the corresponding element size, but in a case of an error (free gives an incorrect element size), we want to identify and output the correct element size.
- Parameters
-
blkmem block memory ptr memory element to search
Definition at line 1685 of file memory.c.
References CHKHASH_SIZE, isPtrInChkmem(), and NULL.
Referenced by BMSgetBlockPointerSize_call().
◆ getHashNumber()
|
static |
calculates hash number of memory size
- Parameters
-
size element size
Definition at line 1708 of file memory.c.
References BMSisAligned(), and CHKHASH_POWER.
Referenced by BMSallocBlockMemory_work(), and BMSfreeBlockMemory_work().
◆ BMScreateBlockMemory_call()
BMS_BLKMEM* BMScreateBlockMemory_call | ( | int | initchunksize, |
int | garbagefactor, | ||
const char * | filename, | ||
int | line | ||
) |
creates a block memory allocation data structure
- Parameters
-
initchunksize number of elements in the first chunk of each chunk block garbagefactor garbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection) filename source file of the function call line line number in source file of the function call
Definition at line 1719 of file memory.c.
References BMSallocMemory, CHKHASH_SIZE, NULL, printError, and printErrorHeader.
◆ BMSclearBlockMemory_call()
void BMSclearBlockMemory_call | ( | BMS_BLKMEM * | blkmem, |
const char * | filename, | ||
int | line | ||
) |
frees all chunk blocks in the block memory
- Parameters
-
blkmem block memory filename source file of the function call line line number in source file of the function call
Definition at line 1753 of file memory.c.
References CHKHASH_SIZE, destroyChkmem(), NULL, printError, and printErrorHeader.
Referenced by BMSdestroyBlockMemory_call().
◆ BMSdestroyBlockMemory_call()
void BMSdestroyBlockMemory_call | ( | BMS_BLKMEM ** | blkmem, |
const char * | filename, | ||
int | line | ||
) |
clears and deletes block memory
- Parameters
-
blkmem pointer to block memory filename source file of the function call line line number in source file of the function call
Definition at line 1787 of file memory.c.
References BMSclearBlockMemory_call(), BMSfreeMemory, INLINE, NULL, printError, and printErrorHeader.
◆ BMSallocBlockMemory_work()
|
static |
work for allocating memory in the block memory pool
- Parameters
-
blkmem block memory size size of memory element to allocate filename source file of the function call line line number in source file of the function call
Definition at line 1810 of file memory.c.
References allocChkmemElement(), BMSduplicateMemoryArray, checkBlkmem, createChkmem(), debugMessage, getHashNumber(), MAX, NULL, printError, and printErrorHeader.
Referenced by BMSallocBlockMemory_call(), and BMSallocBlockMemoryArray_call().
◆ BMSallocBlockMemory_call()
void* BMSallocBlockMemory_call | ( | BMS_BLKMEM * | blkmem, |
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates memory in the block memory pool
- Parameters
-
blkmem block memory size size of memory element to allocate filename source file of the function call line line number in source file of the function call
Definition at line 1873 of file memory.c.
References BMSallocBlockMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSduplicateBlockMemory_call(), and BMSreallocBlockMemory_call().
◆ BMSallocBlockMemoryArray_call()
void* BMSallocBlockMemoryArray_call | ( | BMS_BLKMEM * | blkmem, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates array in the block memory pool
- Parameters
-
blkmem block memory num size of array to be allocated typesize size of each component filename source file of the function call line line number in source file of the function call
Definition at line 1893 of file memory.c.
References BMSallocBlockMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSallocClearBlockMemoryArray_call(), BMSduplicateBlockMemoryArray_call(), and BMSreallocBlockMemoryArray_call().
◆ BMSallocClearBlockMemoryArray_call()
void* BMSallocClearBlockMemoryArray_call | ( | BMS_BLKMEM * | blkmem, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates array in the block memory pool and clears it
- Parameters
-
blkmem block memory num size of array to be allocated typesize size of each component filename source file of the function call line line number in source file of the function call
Definition at line 1914 of file memory.c.
References BMSallocBlockMemoryArray_call(), BMSclearMemorySize, and NULL.
◆ BMSreallocBlockMemory_call()
void* BMSreallocBlockMemory_call | ( | BMS_BLKMEM * | blkmem, |
void * | ptr, | ||
size_t | oldsize, | ||
size_t | newsize, | ||
const char * | filename, | ||
int | line | ||
) |
resizes memory element in the block memory pool and copies the data
- Parameters
-
blkmem block memory ptr memory element to reallocated oldsize old size of memory element newsize new size of memory element filename source file of the function call line line number in source file of the function call
Definition at line 1932 of file memory.c.
References BMSallocBlockMemory_call(), BMScopyMemorySize, BMSfreeBlockMemory_call(), MAXMEMSIZE, MIN, NULL, printError, and printErrorHeader.
◆ BMSreallocBlockMemoryArray_call()
void* BMSreallocBlockMemoryArray_call | ( | BMS_BLKMEM * | blkmem, |
void * | ptr, | ||
size_t | oldnum, | ||
size_t | newnum, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
resizes array in the block memory pool and copies the data
- Parameters
-
blkmem block memory ptr memory element to reallocated oldnum old size of array newnum new size of array typesize size of each component filename source file of the function call line line number in source file of the function call
Definition at line 1972 of file memory.c.
References BMSallocBlockMemoryArray_call(), BMScopyMemorySize, BMSfreeBlockMemory_call(), MAXMEMSIZE, MIN, NULL, printError, and printErrorHeader.
◆ BMSduplicateBlockMemory_call()
void* BMSduplicateBlockMemory_call | ( | BMS_BLKMEM * | blkmem, |
const void * | source, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
duplicates memory element in the block memory pool and copies the data
- Parameters
-
blkmem block memory source memory element to duplicate size size of memory elements filename source file of the function call line line number in source file of the function call
Definition at line 2011 of file memory.c.
References BMSallocBlockMemory_call(), BMScopyMemorySize, and NULL.
◆ BMSduplicateBlockMemoryArray_call()
void* BMSduplicateBlockMemoryArray_call | ( | BMS_BLKMEM * | blkmem, |
const void * | source, | ||
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
duplicates array in the block memory pool and copies the data
- Parameters
-
blkmem block memory source memory element to duplicate num size of array to be duplicated typesize size of each component filename source file of the function call line line number in source file of the function call
Definition at line 2031 of file memory.c.
References BMSallocBlockMemoryArray_call(), BMScopyMemorySize, INLINE, and NULL.
◆ BMSfreeBlockMemory_work()
|
static |
common work for freeing block memory
- Parameters
-
blkmem block memory ptr pointer to pointer to memory element to free size size of memory element filename source file of the function call line line number in source file of the function call
Definition at line 2053 of file memory.c.
References checkBlkmem, debugMessage, freeChkmemElement(), getHashNumber(), MAX, NULL, printError, and printErrorHeader.
Referenced by BMSfreeBlockMemory_call(), and BMSfreeBlockMemoryNull_call().
◆ BMSfreeBlockMemory_call()
void BMSfreeBlockMemory_call | ( | BMS_BLKMEM * | blkmem, |
void ** | ptr, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
frees memory element in the block memory pool and sets pointer to NULL
- Parameters
-
blkmem block memory ptr pointer to pointer to memory element to free size size of memory element filename source file of the function call line line number in source file of the function call
Definition at line 2101 of file memory.c.
References BMSfreeBlockMemory_work(), checkBlkmem, NULL, printError, and printErrorHeader.
Referenced by BMSreallocBlockMemory_call(), and BMSreallocBlockMemoryArray_call().
◆ BMSfreeBlockMemoryNull_call()
void BMSfreeBlockMemoryNull_call | ( | BMS_BLKMEM * | blkmem, |
void ** | ptr, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
frees memory element in the block memory pool if pointer is not NULL and sets pointer to NULL
- Parameters
-
blkmem block memory ptr pointer to pointer to memory element to free size size of memory element filename source file of the function call line line number in source file of the function call
Definition at line 2123 of file memory.c.
References BMSfreeBlockMemory_work(), checkBlkmem, and NULL.
◆ BMSgarbagecollectBlockMemory_call()
void BMSgarbagecollectBlockMemory_call | ( | BMS_BLKMEM * | blkmem | ) |
calls garbage collection of block memory, frees chunks without allocated memory elements, and frees chunk blocks without any chunks
- Parameters
-
blkmem block memory
Definition at line 2144 of file memory.c.
References checkBlkmem, CHKHASH_SIZE, destroyChkmem(), garbagecollectChkmem(), and NULL.
◆ BMSgetBlockMemoryAllocated_call()
long long BMSgetBlockMemoryAllocated_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockMemoryUsed_call()
long long BMSgetBlockMemoryUsed_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockMemoryUnused_call()
long long BMSgetBlockMemoryUnused_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockMemoryUsedMax_call()
long long BMSgetBlockMemoryUsedMax_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockMemoryUnusedMax_call()
long long BMSgetBlockMemoryUnusedMax_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockMemoryAllocatedMax_call()
long long BMSgetBlockMemoryAllocatedMax_call | ( | const BMS_BLKMEM * | blkmem | ) |
◆ BMSgetBlockPointerSize_call()
size_t BMSgetBlockPointerSize_call | ( | const BMS_BLKMEM * | blkmem, |
const void * | ptr | ||
) |
returns the size of the given memory element; returns 0, if the element is not member of the block memory
- Parameters
-
blkmem block memory ptr memory element
Definition at line 2238 of file memory.c.
References findChkmem(), and NULL.
◆ BMSdisplayBlockMemory_call()
void BMSdisplayBlockMemory_call | ( | const BMS_BLKMEM * | blkmem | ) |
outputs allocation diagnostics of block memory
- Parameters
-
blkmem block memory
Definition at line 2258 of file memory.c.
References CHKHASH_SIZE, FOR_EACH_NODE, LONGINT_FORMAT, NULL, and printInfo.
◆ BMScheckEmptyBlockMemory_call()
long long BMScheckEmptyBlockMemory_call | ( | const BMS_BLKMEM * | blkmem | ) |
outputs error messages, if there are allocated elements in the block memory and returns number of unfreed bytes
- Parameters
-
blkmem block memory
Definition at line 2382 of file memory.c.
References CHKHASH_SIZE, errorMessage, FOR_EACH_NODE, LONGINT_FORMAT, and NULL.
◆ BMScreateBufferMemory_call()
BMS_BUFMEM* BMScreateBufferMemory_call | ( | double | arraygrowfac, |
int | arraygrowinit, | ||
unsigned int | clean, | ||
const char * | filename, | ||
int | line | ||
) |
creates memory buffer storage
- Parameters
-
arraygrowfac memory growing factor for dynamically allocated arrays arraygrowinit initial size of dynamically allocated arrays clean should the memory blocks in the buffer be initialized to zero? filename source file of the function call line line number in source file of the function call
Definition at line 2476 of file memory.c.
References BMS_BufMem::arraygrowfac, BMS_BufMem::arraygrowinit, BMSallocMemory, BMS_BufMem::clean, BMS_BufMem::data, BMS_BufMem::firstfree, BMS_BufMem::ndata, NULL, printError, printErrorHeader, BMS_BufMem::size, BMS_BufMem::totalmem, and BMS_BufMem::used.
◆ BMSdestroyBufferMemory_call()
void BMSdestroyBufferMemory_call | ( | BMS_BUFMEM ** | buffer, |
const char * | filename, | ||
int | line | ||
) |
destroys buffer memory
- Parameters
-
buffer pointer to memory buffer storage filename source file of the function call line line number in source file of the function call
Definition at line 2512 of file memory.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, printError, and printErrorHeader.
◆ BMSsetBufferMemoryArraygrowfac()
void BMSsetBufferMemoryArraygrowfac | ( | BMS_BUFMEM * | buffer, |
double | arraygrowfac | ||
) |
set arraygrowfac
- Parameters
-
buffer pointer to memory buffer storage arraygrowfac memory growing factor for dynamically allocated arrays
Definition at line 2545 of file memory.c.
References BMS_BufMem::arraygrowfac, and NULL.
Referenced by SCIP_DECL_PARAMCHGD().
◆ BMSsetBufferMemoryArraygrowinit()
void BMSsetBufferMemoryArraygrowinit | ( | BMS_BUFMEM * | buffer, |
int | arraygrowinit | ||
) |
set arraygrowinit
- Parameters
-
buffer pointer to memory buffer storage arraygrowinit initial size of dynamically allocated arrays
Definition at line 2557 of file memory.c.
References BMS_BufMem::arraygrowinit, and NULL.
Referenced by SCIP_DECL_PARAMCHGD().
◆ calcMemoryGrowSize()
|
static |
calculate memory size for dynamically allocated arrays
This function is a copy of the function in set.c in order to be able to use memory.? separately.
- Parameters
-
initsize initial size of array growfac growing factor of array num minimum number of entries to store
Definition at line 2574 of file memory.c.
Referenced by BMSallocBufferMemory_work(), and BMSreallocBufferMemory_work().
◆ BMSallocBufferMemory_work()
|
static |
work for allocating the next unused buffer
- Parameters
-
buffer memory buffer storage size minimal required size of the buffer filename source file of the function call line line number in source file of the function call
Definition at line 2616 of file memory.c.
References BMS_BufMem::arraygrowfac, BMS_BufMem::arraygrowinit, BMSallocClearMemorySize, BMSallocMemorySize, BMSclearMemorySize, BMSreallocMemoryArray, BMSreallocMemorySize, calcMemoryGrowSize(), BMS_BufMem::clean, BMS_BufMem::data, debugMessage, FALSE, BMS_BufMem::firstfree, MAX, BMS_BufMem::ndata, NULL, printError, printErrorHeader, BMS_BufMem::size, BMS_BufMem::totalmem, TRUE, and BMS_BufMem::used.
Referenced by BMSallocBufferMemory_call(), and BMSallocBufferMemoryArray_call().
◆ BMSallocBufferMemory_call()
void* BMSallocBufferMemory_call | ( | BMS_BUFMEM * | buffer, |
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates the next unused buffer
- Parameters
-
buffer memory buffer storage size minimal required size of the buffer filename source file of the function call line line number in source file of the function call
Definition at line 2750 of file memory.c.
References BMSallocBufferMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSduplicateBufferMemory_call(), and BMSreallocBufferMemory_work().
◆ BMSallocBufferMemoryArray_call()
void* BMSallocBufferMemoryArray_call | ( | BMS_BUFMEM * | buffer, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates the next unused buffer array
- Parameters
-
buffer memory buffer storage num size of array to be allocated typesize size of components filename source file of the function call line line number in source file of the function call
Definition at line 2770 of file memory.c.
References BMSallocBufferMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
Referenced by BMSallocClearBufferMemoryArray_call(), and BMSduplicateBufferMemoryArray_call().
◆ BMSallocClearBufferMemoryArray_call()
void* BMSallocClearBufferMemoryArray_call | ( | BMS_BUFMEM * | buffer, |
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates the next unused buffer and clears it
- Parameters
-
buffer memory buffer storage num size of array to be allocated typesize size of components filename source file of the function call line line number in source file of the function call
Definition at line 2791 of file memory.c.
References BMSallocBufferMemoryArray_call(), BMSclearMemorySize, INLINE, and NULL.
◆ BMSreallocBufferMemory_work()
|
static |
work for reallocating the buffer to at least the given size
- Parameters
-
buffer memory buffer storage ptr pointer to the allocated memory buffer size minimal required size of the buffer filename source file of the function call line line number in source file of the function call
Definition at line 2810 of file memory.c.
References BMS_BufMem::arraygrowfac, BMS_BufMem::arraygrowinit, BMSallocBufferMemory_call(), BMSreallocMemorySize, calcMemoryGrowSize(), BMS_BufMem::clean, BMS_BufMem::data, debugMessage, BMS_BufMem::firstfree, BMS_BufMem::ndata, NULL, printError, printErrorHeader, BMS_BufMem::size, BMS_BufMem::totalmem, and BMS_BufMem::used.
Referenced by BMSreallocBufferMemory_call(), and BMSreallocBufferMemoryArray_call().
◆ BMSreallocBufferMemory_call()
void* BMSreallocBufferMemory_call | ( | BMS_BUFMEM * | buffer, |
void * | ptr, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
reallocates the buffer to at least the given size
- Parameters
-
buffer memory buffer storage ptr pointer to the allocated memory buffer size minimal required size of the buffer filename source file of the function call line line number in source file of the function call
Definition at line 2882 of file memory.c.
References BMSreallocBufferMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
◆ BMSreallocBufferMemoryArray_call()
void* BMSreallocBufferMemoryArray_call | ( | BMS_BUFMEM * | buffer, |
void * | ptr, | ||
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
reallocates an array in the buffer to at least the given size
- Parameters
-
buffer memory buffer storage ptr pointer to the allocated memory buffer num size of array to be allocated typesize size of components filename source file of the function call line line number in source file of the function call
Definition at line 2903 of file memory.c.
References BMSreallocBufferMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.
◆ BMSduplicateBufferMemory_call()
void* BMSduplicateBufferMemory_call | ( | BMS_BUFMEM * | buffer, |
const void * | source, | ||
size_t | size, | ||
const char * | filename, | ||
int | line | ||
) |
allocates the next unused buffer and copies the given memory into the buffer
- Parameters
-
buffer memory buffer storage source memory block to copy into the buffer size minimal required size of the buffer filename source file of the function call line line number in source file of the function call
Definition at line 2925 of file memory.c.
References BMSallocBufferMemory_call(), BMScopyMemorySize, and NULL.
◆ BMSduplicateBufferMemoryArray_call()
void* BMSduplicateBufferMemoryArray_call | ( | BMS_BUFMEM * | buffer, |
const void * | source, | ||
size_t | num, | ||
size_t | typesize, | ||
const char * | filename, | ||
int | line | ||
) |
allocates an array in the next unused buffer and copies the given memory into the buffer
- Parameters
-
buffer memory buffer storage source memory block to copy into the buffer num size of array to be allocated typesize size of components filename source file of the function call line line number in source file of the function call
Definition at line 2948 of file memory.c.
References BMSallocBufferMemoryArray_call(), BMScopyMemorySize, INLINE, and NULL.
◆ BMSfreeBufferMemory_work()
|
static |
work for freeing a buffer
- Parameters
-
buffer memory buffer storage ptr pointer to pointer to the allocated memory buffer filename source file of the function call line line number in source file of the function call
Definition at line 2973 of file memory.c.
References BMS_BufMem::clean, BMS_BufMem::data, debugMessage, FALSE, BMS_BufMem::firstfree, BMS_BufMem::ndata, NULL, printError, printErrorHeader, BMS_BufMem::size, BMS_BufMem::used, and warningMessage.
Referenced by BMSfreeBufferMemory_call(), and BMSfreeBufferMemoryNull_call().
◆ BMSfreeBufferMemory_call()
void BMSfreeBufferMemory_call | ( | BMS_BUFMEM * | buffer, |
void ** | ptr, | ||
const char * | filename, | ||
int | line | ||
) |
frees a buffer and sets pointer to NULL
- Parameters
-
buffer memory buffer storage ptr pointer to pointer to the allocated memory buffer filename source file of the function call line line number in source file of the function call
Definition at line 3044 of file memory.c.
References BMSfreeBufferMemory_work(), BMSfreeMemory, NULL, printError, and printErrorHeader.
◆ BMSfreeBufferMemoryNull_call()
void BMSfreeBufferMemoryNull_call | ( | BMS_BUFMEM * | buffer, |
void ** | ptr, | ||
const char * | filename, | ||
int | line | ||
) |
frees a buffer if pointer is not NULL and sets pointer to NULL
- Parameters
-
buffer memory buffer storage ptr pointer to pointer to the allocated memory buffer filename source file of the function call line line number in source file of the function call
Definition at line 3067 of file memory.c.
References BMSfreeBufferMemory_work(), BMSfreeMemory, and NULL.
◆ BMSgetNUsedBufferMemory()
size_t BMSgetNUsedBufferMemory | ( | BMS_BUFMEM * | buffer | ) |
gets number of used buffers
- Parameters
-
buffer memory buffer storage
Definition at line 3087 of file memory.c.
References BMS_BufMem::firstfree, and NULL.
Referenced by exitPresolve(), initPresolve(), presolve(), presolveRound(), priceAndCutLoop(), propagationRound(), propAndSolve(), SCIPprimalHeuristics(), SCIPsolveCIP(), separationRoundLP(), and solveNode().
◆ BMSgetBufferMemoryUsed()
long long BMSgetBufferMemoryUsed | ( | const BMS_BUFMEM * | buffer | ) |
returns the number of allocated bytes in the buffer memory
- Parameters
-
buffer buffer memory
Definition at line 3097 of file memory.c.
References BMS_BufMem::ndata, NULL, BMS_BufMem::size, and BMS_BufMem::totalmem.
Referenced by SCIPmemGetTotal(), and SCIPmemGetUsed().
◆ BMSprintBufferMemory()
void BMSprintBufferMemory | ( | BMS_BUFMEM * | buffer | ) |
outputs statistics about currently allocated buffers to the screen
- Parameters
-
buffer memory buffer storage
Definition at line 3115 of file memory.c.
References BMS_BufMem::data, BMS_BufMem::ndata, NULL, BMS_BufMem::size, and BMS_BufMem::used.
Referenced by SCIPprintMemoryDiagnostic().