Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    memory allocation routines

    Author
    Tobias Achterberg
    Gerald Gamrath
    Marc Pfetsch
    Jakob Witzig

    Definition in file memory.c.

    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <string.h>
    #include "scip/config.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 printInfo   printf
     
    #define LONGINT_FORMAT   SCIP_LONGINT_FORMAT
     
    #define MAXMEMSIZE   SCIP_MAXMEMSIZE
     
    #define addMemlistEntry(ptr, size, filename, line)   do { (void) (ptr); (void) (size); (void) (filename); (void) (line); } while(0)
     
    #define removeMemlistEntry(ptr, filename, line)   do { (void) (ptr); (void) (filename); (void) (line); } while(0)
     
    #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 CHUNKfindChunk (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_CHKMEMcreateChkmem (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_CHKMEMBMScreateChunkMemory_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_CHKMEMfindChkmem (const BMS_BLKMEM *blkmem, const void *ptr)
     
    static uint32_t getHashNumber (size_t size)
     
    BMS_BLKMEMBMScreateBlockMemory_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 * BMSallocClearBlockMemory_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_BUFMEMBMScreateBufferMemory_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 89 of file memory.c.

    ◆ errorMessage

    #define errorMessage (   void)    printf

    Definition at line 90 of file memory.c.

    ◆ printErrorHeader

    #define printErrorHeader (   f,
     
    )    printf("[%s:%d] ERROR: ", f, l)

    Definition at line 91 of file memory.c.

    ◆ printError

    #define printError   printf

    Definition at line 92 of file memory.c.

    ◆ printInfo

    #define printInfo   printf

    Definition at line 98 of file memory.c.

    ◆ LONGINT_FORMAT

    #define LONGINT_FORMAT   SCIP_LONGINT_FORMAT

    Definition at line 117 of file memory.c.

    ◆ MAXMEMSIZE

    #define MAXMEMSIZE   SCIP_MAXMEMSIZE

    Definition at line 124 of file memory.c.

    ◆ addMemlistEntry

    #define addMemlistEntry (   ptr,
      size,
      filename,
      line 
    )    do { (void) (ptr); (void) (size); (void) (filename); (void) (line); } while(0)

    Definition at line 308 of file memory.c.

    ◆ removeMemlistEntry

    #define removeMemlistEntry (   ptr,
      filename,
      line 
    )    do { (void) (ptr); (void) (filename); (void) (line); } while(0)

    Definition at line 309 of file memory.c.

    ◆ CHKHASH_POWER

    #define CHKHASH_POWER   10

    power for size of chunk block hash table

    Definition at line 665 of file memory.c.

    ◆ CHKHASH_SIZE

    #define CHKHASH_SIZE   (1<<CHKHASH_POWER)

    size of chunk block hash table is 2^CHKHASH_POWER

    Definition at line 666 of file memory.c.

    ◆ CHUNKLENGTH_MIN

    #define CHUNKLENGTH_MIN   1024

    minimal size of a chunk (in bytes)

    Definition at line 693 of file memory.c.

    ◆ CHUNKLENGTH_MAX

    #define CHUNKLENGTH_MAX   1048576

    maximal size of a chunk (in bytes)

    Definition at line 694 of file memory.c.

    ◆ STORESIZE_MAX

    #define STORESIZE_MAX   8192

    maximal number of elements in one chunk

    Definition at line 695 of file memory.c.

    ◆ GARBAGE_SIZE

    #define GARBAGE_SIZE   256

    size of lazy free list to start garbage collection

    Definition at line 696 of file memory.c.

    ◆ ALIGNMENT

    #define ALIGNMENT   (sizeof(FREELIST))

    minimal alignment of chunks

    Definition at line 697 of file memory.c.

    ◆ CHUNK_LT

    #define CHUNK_LT (   ptr,
      chunk 
    )    ptr < chunk->store

    Definition at line 748 of file memory.c.

    ◆ CHUNK_GT

    #define CHUNK_GT (   ptr,
      chunk 
    )    ptr >= chunk->storeend

    Definition at line 749 of file memory.c.

    ◆ checkChunk

    #define checkChunk (   chunk)

    Definition at line 925 of file memory.c.

    ◆ checkChkmem

    #define checkChkmem (   chkmem)

    Definition at line 926 of file memory.c.

    ◆ checkBlkmem

    #define checkBlkmem (   blkmem)

    Definition at line 1727 of file memory.c.

    Typedef Documentation

    ◆ FREELIST

    typedef struct Freelist FREELIST

    linked list of free memory elements

    Definition at line 699 of file memory.c.

    ◆ CHUNK

    typedef struct Chunk CHUNK

    chunk of memory elements

    Definition at line 700 of file memory.c.

    Function Documentation

    ◆ BMSgetPointerSize_call()

    size_t BMSgetPointerSize_call ( const void *  ptr)

    returns the size of an allocated memory element

    Parameters
    ptrpointer to allocated memory

    Definition at line 316 of file memory.c.

    ◆ BMSdisplayMemory_call()

    void BMSdisplayMemory_call ( void  )

    outputs information about currently allocated memory to the screen

    Definition at line 325 of file memory.c.

    References printInfo.

    ◆ BMScheckEmptyMemory_call()

    void BMScheckEmptyMemory_call ( void  )

    displays a warning message on the screen, if allocated memory exists

    Definition at line 333 of file memory.c.

    ◆ BMSgetMemoryUsed_call()

    long long BMSgetMemoryUsed_call ( void  )

    returns total number of allocated bytes

    Definition at line 340 of file memory.c.

    ◆ 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
    numnumber of memory element to allocate
    typesizesize of one memory element to allocate
    filenamesource file where the allocation is performed
    lineline number in source file where the allocation is performed

    Definition at line 350 of file memory.c.

    References addMemlistEntry, 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
    sizesize of memory element to allocate
    filenamesource file where the allocation is performed
    lineline number in source file where the allocation is performed

    Definition at line 389 of file memory.c.

    References addMemlistEntry, 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
    numnumber of components of array to allocate
    typesizesize of each component
    filenamesource file where the allocation is performed
    lineline number in source file where the allocation is performed

    Definition at line 423 of file memory.c.

    References addMemlistEntry, 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
    ptrpointer to memory to reallocate
    sizenew size of memory element
    filenamesource file where the reallocation is performed
    lineline number in source file where the reallocation is performed

    Definition at line 461 of file memory.c.

    References addMemlistEntry, MAX, MAXMEMSIZE, NULL, printError, printErrorHeader, and removeMemlistEntry.

    ◆ 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
    ptrpointer to memory to reallocate
    numnumber of components of array to allocate
    typesizesize of each component
    filenamesource file where the reallocation is performed
    lineline number in source file where the reallocation is performed

    Definition at line 497 of file memory.c.

    References addMemlistEntry, MAX, MAXMEMSIZE, NULL, printError, printErrorHeader, and removeMemlistEntry.

    ◆ BMSclearMemory_call()

    void BMSclearMemory_call ( void *  ptr,
    size_t  size 
    )

    clears a memory element (i.e. fills it with zeros)

    Parameters
    ptrpointer to memory element
    sizesize of memory element

    Definition at line 536 of file memory.c.

    References NULL.

    ◆ 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
    ptrpointer to target memory element
    sourcepointer to source memory element
    sizesize of memory element to copy

    Definition at line 549 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
    ptrpointer to target memory element
    sourcepointer to source memory element
    sizesize of memory element to copy

    Definition at line 566 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
    sourcepointer to source memory element
    sizesize of memory element to copy
    filenamesource file where the duplication is performed
    lineline number in source file where the duplication is performed

    Definition at line 581 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
    sourcepointer to source memory element
    numnumber of components of array to allocate
    typesizesize of each component
    filenamesource file where the duplication is performed
    lineline number in source file where the duplication is performed

    Definition at line 600 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
    ptrpointer to pointer to memory element
    filenamesource file where the deallocation is performed
    lineline number in source file where the deallocation is performed

    Definition at line 620 of file memory.c.

    References NULL, printError, printErrorHeader, and removeMemlistEntry.

    ◆ 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
    ptrpointer to pointer to memory element
    filenamesource file where the deallocation is performed
    lineline number in source file where the deallocation is performed

    Definition at line 642 of file memory.c.

    References NULL, and removeMemlistEntry.

    ◆ SCIP_DEF_RBTREE_FIND()

    static SCIP_DEF_RBTREE_FIND ( rbTreeFindChunk  ,
    const void *  ,
    CHUNK  ,
    CHUNK_LT  ,
    CHUNK_GT   
    )
    static

    aligns the given byte size corresponding to the minimal alignment pointer to the size to align

    Definition at line 752 of file memory.c.

    References ALIGNMENT.

    ◆ BMSalignMemsize()

    void BMSalignMemsize ( size_t *  size)

    aligns the given byte size corresponding to the minimal alignment for chunk and block memory

    Parameters
    sizepointer to the size to align

    Definition at line 768 of file memory.c.

    References ALIGNMENT.

    ◆ BMSisAligned()

    int BMSisAligned ( size_t  size)

    checks whether the given size meets the alignment conditions for chunk and block memory

    Parameters
    sizesize to check for alignment

    Definition at line 777 of file memory.c.

    References ALIGNMENT.

    Referenced by createChkmem(), createChunk(), and getHashNumber().

    ◆ isPtrInChunk()

    static int isPtrInChunk ( const CHUNK chunk,
    const void *  ptr 
    )
    static

    checks if the given pointer belongs to the given chunk

    Parameters
    chunkmemory chunk
    ptrpointer

    Definition at line 788 of file memory.c.

    References NULL.

    Referenced by freeChunkElement().

    ◆ findChunk()

    static CHUNK * findChunk ( const BMS_CHKMEM chkmem,
    const void *  ptr 
    )
    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
    chkmemchunk block
    ptrpointer

    Definition at line 805 of file memory.c.

    References NULL.

    Referenced by garbagecollectChkmem(), and isPtrInChkmem().

    ◆ isPtrInChkmem()

    static int isPtrInChkmem ( const BMS_CHKMEM chkmem,
    const void *  ptr 
    )
    static

    checks if a pointer belongs to a chunk of the given chunk block

    Parameters
    chkmemchunk block
    ptrpointer

    Definition at line 824 of file memory.c.

    References findChunk(), and NULL.

    Referenced by findChkmem(), and freeChkmemElement().

    ◆ linkChunk()

    static int linkChunk ( BMS_CHKMEM chkmem,
    CHUNK chunk 
    )
    static

    links chunk to the block's chunk array, sort it by store pointer; returns TRUE if successful, FALSE otherwise

    Parameters
    chkmemchunk block
    chunkmemory chunk

    Definition at line 968 of file memory.c.

    References debugMessage, NULL, SCIPrbtreeInsert, and TRUE.

    Referenced by createChunk().

    ◆ unlinkChunk()

    static void unlinkChunk ( CHUNK chunk)
    static

    unlinks chunk from the chunk block's chunk list

    Parameters
    chunkmemory chunk

    Definition at line 996 of file memory.c.

    References debugMessage, NULL, and SCIPrbtreeDelete.

    Referenced by freeChunk().

    ◆ linkEagerChunk()

    static void linkEagerChunk ( BMS_CHKMEM chkmem,
    CHUNK chunk 
    )
    static

    links chunk to the chunk block's eager chunk list

    Parameters
    chkmemchunk block
    chunkmemory chunk

    Definition at line 1023 of file memory.c.

    References NULL.

    Referenced by freeChunkElement().

    ◆ unlinkEagerChunk()

    static void unlinkEagerChunk ( CHUNK chunk)
    static

    unlinks chunk from the chunk block's eager chunk list

    Parameters
    chunkmemory chunk

    Definition at line 1044 of file memory.c.

    References NULL.

    Referenced by allocChunkElement(), and freeChunk().

    ◆ createChunk()

    static int createChunk ( BMS_CHKMEM chkmem,
    long long *  memsize 
    )
    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
    chkmemchunk block
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1069 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 void destroyChunk ( CHUNK **  chunk,
    long long *  memsize 
    )
    static

    destroys a chunk without updating the chunk lists

    Parameters
    chunkmemory chunk
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1144 of file memory.c.

    References BMSfreeMemory, debugMessage, and NULL.

    Referenced by freeChunk().

    ◆ freeChunk()

    static void freeChunk ( CHUNK **  chunk,
    long long *  memsize 
    )
    static

    removes a completely unused chunk, i.e. a chunk with all elements in the eager free list

    Parameters
    chunkmemory chunk
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1163 of file memory.c.

    References debugMessage, destroyChunk(), NULL, unlinkChunk(), and unlinkEagerChunk().

    Referenced by garbagecollectChkmem().

    ◆ allocChunkElement()

    static void * allocChunkElement ( CHUNK chunk)
    static

    returns an element of the eager free list and removes it from the list

    Parameters
    chunkmemory chunk

    Definition at line 1195 of file memory.c.

    References checkChunk, debugMessage, NULL, and unlinkEagerChunk().

    Referenced by allocChkmemElement().

    ◆ freeChunkElement()

    static void freeChunkElement ( CHUNK chunk,
    void *  ptr 
    )
    static

    puts given pointer into the eager free list and adds the chunk to the eager list of its chunk block, if necessary

    Parameters
    chunkmemory chunk
    ptrpointer

    Definition at line 1232 of file memory.c.

    References checkChunk, debugMessage, isPtrInChunk(), linkEagerChunk(), and NULL.

    Referenced by garbagecollectChkmem().

    ◆ createChkmem()

    static BMS_CHKMEM * createChkmem ( int  size,
    int  initchunksize,
    int  garbagefactor,
    long long *  memsize 
    )
    static

    creates a new chunk block data structure

    Parameters
    sizeelement size of the chunk block
    initchunksizenumber of elements in the first chunk of the chunk block
    garbagefactorgarbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection)
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1261 of file memory.c.

    References BMSallocMemory, BMSisAligned(), and NULL.

    Referenced by BMSallocBlockMemory_work(), and BMScreateChunkMemory_call().

    ◆ clearChkmem()

    static void clearChkmem ( BMS_CHKMEM chkmem,
    long long *  memsize 
    )
    static

    destroys all chunks of the chunk block, but keeps the chunk block header structure

    Parameters
    chkmemchunk block
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1305 of file memory.c.

    References FOR_EACH_NODE, and NULL.

    Referenced by BMSclearChunkMemory_call(), destroyChkmem(), and garbagecollectChkmem().

    ◆ destroyChkmem()

    static void destroyChkmem ( BMS_CHKMEM **  chkmem,
    long long *  memsize 
    )
    static

    deletes chunk block and frees all associated memory chunks

    Parameters
    chkmempointer to chunk block
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1330 of file memory.c.

    References BMSfreeMemory, BMSfreeMemoryArrayNull, clearChkmem(), and NULL.

    Referenced by BMSclearBlockMemory_call(), BMSdestroyChunkMemory_call(), and BMSgarbagecollectBlockMemory_call().

    ◆ allocChkmemElement()

    static void * allocChkmemElement ( BMS_CHKMEM chkmem,
    long long *  memsize 
    )
    static

    allocates a new memory element from the chunk block

    Parameters
    chkmemchunk block
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1352 of file memory.c.

    References allocChunkElement(), checkChkmem, createChunk(), and NULL.

    Referenced by BMSallocBlockMemory_work(), and BMSallocChunkMemory_call().

    ◆ garbagecollectChkmem()

    static void garbagecollectChkmem ( BMS_CHKMEM chkmem,
    long long *  memsize 
    )
    static

    sorts the lazy free list of the chunk block into the eager free lists of the chunks, and removes completely unused chunks

    Parameters
    chkmemchunk block
    memsizepointer to total size of allocated memory (or NULL)

    Definition at line 1392 of file memory.c.

    References checkChkmem, clearChkmem(), debugMessage, errorMessage, findChunk(), freeChunk(), freeChunkElement(), and NULL.

    Referenced by BMSgarbagecollectBlockMemory_call(), BMSgarbagecollectChunkMemory_call(), and freeChkmemElement().

    ◆ freeChkmemElement()

    static void freeChkmemElement ( BMS_CHKMEM chkmem,
    void *  ptr,
    long long *  memsize,
    const char *  filename,
    int  line 
    )
    static

    frees a memory element and returns it to the lazy freelist of the chunk block

    Parameters
    chkmemchunk block
    ptrmemory element
    memsizepointer to total size of allocated memory (or NULL)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1460 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
    sizeelement size of the chunk block
    initchunksizenumber of elements in the first chunk of the chunk block
    garbagefactorgarbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1497 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
    chkmemchunk block
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1521 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
    chkmempointer to chunk block
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1540 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
    chkmemchunk block
    sizesize of memory element to allocate (only needed for sanity check)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1561 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
    chkmemchunk block
    sourcesource memory element
    sizesize of memory element to allocate (only needed for sanity check)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1588 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
    chkmemchunk block
    ptrpointer to pointer to memory element to free
    sizesize of memory element to allocate (only needed for sanity check)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1610 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
    chkmemchunk block
    ptrpointer to pointer to memory element to free
    sizesize of memory element to allocate (only needed for sanity check)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1639 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
    chkmemchunk block

    Definition at line 1663 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
    chkmemchunk block

    Definition at line 1673 of file memory.c.

    References NULL.

    ◆ findChkmem()

    static BMS_CHKMEM * findChkmem ( const BMS_BLKMEM blkmem,
    const void *  ptr 
    )
    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
    blkmemblock memory
    ptrmemory element to search

    Definition at line 1737 of file memory.c.

    References CHKHASH_SIZE, isPtrInChkmem(), and NULL.

    Referenced by BMSgetBlockPointerSize_call().

    ◆ getHashNumber()

    static uint32_t getHashNumber ( size_t  size)
    static

    calculates hash number of memory size

    Parameters
    sizeelement size

    Definition at line 1760 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
    initchunksizenumber of elements in the first chunk of each chunk block
    garbagefactorgarbage collector is called, if at least garbagefactor * avg. chunksize elements are free (-1: disable garbage collection)
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1770 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
    blkmemblock memory
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1804 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
    blkmempointer to block memory
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1838 of file memory.c.

    References BMSclearBlockMemory_call(), BMSfreeMemory, NULL, printError, and printErrorHeader.

    ◆ BMSallocBlockMemory_work()

    static INLINE void * BMSallocBlockMemory_work ( BMS_BLKMEM blkmem,
    size_t  size,
    const char *  filename,
    int  line 
    )
    static

    work for allocating memory in the block memory pool

    Parameters
    blkmemblock memory
    sizesize of memory element to allocate
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1861 of file memory.c.

    References allocChkmemElement(), BMSduplicateMemoryArray, BMSfreeMemoryArrayNull, checkBlkmem, CHKHASH_SIZE, 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
    blkmemblock memory
    sizesize of memory element to allocate
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1937 of file memory.c.

    References BMSallocBlockMemory_work(), MAXMEMSIZE, NULL, printError, and printErrorHeader.

    Referenced by BMSallocClearBlockMemory_call(), BMSduplicateBlockMemory_call(), and BMSreallocBlockMemory_call().

    ◆ BMSallocClearBlockMemory_call()

    void * BMSallocClearBlockMemory_call ( BMS_BLKMEM blkmem,
    size_t  size,
    const char *  filename,
    int  line 
    )

    allocates memory in the block memory pool and clears it

    Parameters
    blkmemblock memory
    sizesize of memory element to allocate
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1957 of file memory.c.

    References BMSallocBlockMemory_call(), BMSclearMemorySize, and NULL.

    ◆ 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
    blkmemblock memory
    numsize of array to be allocated
    typesizesize of each component
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1974 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
    blkmemblock memory
    numsize of array to be allocated
    typesizesize of each component
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 1995 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
    blkmemblock memory
    ptrmemory element to reallocated
    oldsizeold size of memory element
    newsizenew size of memory element
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2013 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
    blkmemblock memory
    ptrmemory element to reallocated
    oldnumold size of array
    newnumnew size of array
    typesizesize of each component
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2053 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
    blkmemblock memory
    sourcememory element to duplicate
    sizesize of memory elements
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2092 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
    blkmemblock memory
    sourcememory element to duplicate
    numsize of array to be duplicated
    typesizesize of each component
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2112 of file memory.c.

    References BMSallocBlockMemoryArray_call(), BMScopyMemorySize, and NULL.

    ◆ BMSfreeBlockMemory_work()

    static INLINE void BMSfreeBlockMemory_work ( BMS_BLKMEM blkmem,
    void **  ptr,
    size_t  size,
    const char *  filename,
    int  line 
    )
    static

    common work for freeing block memory

    Parameters
    blkmemblock memory
    ptrpointer to pointer to memory element to free
    sizesize of memory element
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2134 of file memory.c.

    References checkBlkmem, CHKHASH_SIZE, 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
    blkmemblock memory
    ptrpointer to pointer to memory element to free
    sizesize of memory element
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2183 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
    blkmemblock memory
    ptrpointer to pointer to memory element to free
    sizesize of memory element
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2205 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
    blkmemblock memory

    Definition at line 2226 of file memory.c.

    References checkBlkmem, CHKHASH_SIZE, destroyChkmem(), garbagecollectChkmem(), and NULL.

    ◆ BMSgetBlockMemoryAllocated_call()

    long long BMSgetBlockMemoryAllocated_call ( const BMS_BLKMEM blkmem)

    returns the number of allocated bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2260 of file memory.c.

    References NULL.

    ◆ BMSgetBlockMemoryUsed_call()

    long long BMSgetBlockMemoryUsed_call ( const BMS_BLKMEM blkmem)

    returns the number of used bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2270 of file memory.c.

    References NULL.

    ◆ BMSgetBlockMemoryUnused_call()

    long long BMSgetBlockMemoryUnused_call ( const BMS_BLKMEM blkmem)

    returns the number of allocated but not used bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2280 of file memory.c.

    References NULL.

    ◆ BMSgetBlockMemoryUsedMax_call()

    long long BMSgetBlockMemoryUsedMax_call ( const BMS_BLKMEM blkmem)

    returns the maximal number of used bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2290 of file memory.c.

    References NULL.

    ◆ BMSgetBlockMemoryUnusedMax_call()

    long long BMSgetBlockMemoryUnusedMax_call ( const BMS_BLKMEM blkmem)

    returns the maximal number of allocated but not used bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2300 of file memory.c.

    References NULL.

    ◆ BMSgetBlockMemoryAllocatedMax_call()

    long long BMSgetBlockMemoryAllocatedMax_call ( const BMS_BLKMEM blkmem)

    returns the maximal number of allocated bytes in the block memory

    Parameters
    blkmemblock memory

    Definition at line 2310 of file memory.c.

    References NULL.

    ◆ 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
    blkmemblock memory
    ptrmemory element

    Definition at line 2320 of file memory.c.

    References findChkmem(), and NULL.

    ◆ BMSdisplayBlockMemory_call()

    void BMSdisplayBlockMemory_call ( const BMS_BLKMEM blkmem)

    outputs allocation diagnostics of block memory

    Parameters
    blkmemblock memory

    Definition at line 2340 of file memory.c.

    References CHKHASH_SIZE, FOR_EACH_NODE, 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
    blkmemblock memory

    Definition at line 2464 of file memory.c.

    References CHKHASH_SIZE, errorMessage, FOR_EACH_NODE, LONGINT_FORMAT, NULL, and SCIP_UNUSED.

    ◆ BMScreateBufferMemory_call()

    BMS_BUFMEM * BMScreateBufferMemory_call ( double  arraygrowfac,
    int  arraygrowinit,
    unsigned int  clean,
    const char *  filename,
    int  line 
    )

    creates memory buffer storage

    Parameters
    arraygrowfacmemory growing factor for dynamically allocated arrays
    arraygrowinitinitial size of dynamically allocated arrays
    cleanshould the memory blocks in the buffer be initialized to zero?
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2559 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
    bufferpointer to memory buffer storage
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2595 of file memory.c.

    References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, printError, and printErrorHeader.

    ◆ BMSsetBufferMemoryArraygrowfac()

    void BMSsetBufferMemoryArraygrowfac ( BMS_BUFMEM buffer,
    double  arraygrowfac 
    )

    set arraygrowfac

    Parameters
    bufferpointer to memory buffer storage
    arraygrowfacmemory growing factor for dynamically allocated arrays

    Definition at line 2628 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
    bufferpointer to memory buffer storage
    arraygrowinitinitial size of dynamically allocated arrays

    Definition at line 2640 of file memory.c.

    References BMS_BufMem::arraygrowinit, and NULL.

    Referenced by SCIP_DECL_PARAMCHGD().

    ◆ calcMemoryGrowSize()

    static size_t calcMemoryGrowSize ( size_t  initsize,
    SCIP_Real  growfac,
    size_t  num 
    )
    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
    initsizeinitial size of array
    growfacgrowing factor of array
    numminimum number of entries to store

    Definition at line 2657 of file memory.c.

    References MAX.

    Referenced by BMSallocBufferMemory_work(), and BMSreallocBufferMemory_work().

    ◆ BMSallocBufferMemory_work()

    static INLINE void * BMSallocBufferMemory_work ( BMS_BUFMEM buffer,
    size_t  size,
    const char *  filename,
    int  line 
    )
    static

    work for allocating the next unused buffer

    Parameters
    buffermemory buffer storage
    sizeminimal required size of the buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2699 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
    buffermemory buffer storage
    sizeminimal required size of the buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2825 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
    buffermemory buffer storage
    numsize of array to be allocated
    typesizesize of components
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2845 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
    buffermemory buffer storage
    numsize of array to be allocated
    typesizesize of components
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2866 of file memory.c.

    References BMSallocBufferMemoryArray_call(), BMSclearMemorySize, and NULL.

    ◆ BMSreallocBufferMemory_work()

    static INLINE void * BMSreallocBufferMemory_work ( BMS_BUFMEM buffer,
    void *  ptr,
    size_t  size,
    const char *  filename,
    int  line 
    )
    static

    work for reallocating the buffer to at least the given size

    Parameters
    buffermemory buffer storage
    ptrpointer to the allocated memory buffer
    sizeminimal required size of the buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2885 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
    buffermemory buffer storage
    ptrpointer to the allocated memory buffer
    sizeminimal required size of the buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2957 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
    buffermemory buffer storage
    ptrpointer to the allocated memory buffer
    numsize of array to be allocated
    typesizesize of components
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 2978 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
    buffermemory buffer storage
    sourcememory block to copy into the buffer
    sizeminimal required size of the buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 3000 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
    buffermemory buffer storage
    sourcememory block to copy into the buffer
    numsize of array to be allocated
    typesizesize of components
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 3023 of file memory.c.

    References BMSallocBufferMemoryArray_call(), BMScopyMemorySize, and NULL.

    ◆ BMSfreeBufferMemory_work()

    static INLINE void BMSfreeBufferMemory_work ( BMS_BUFMEM buffer,
    void **  ptr,
    const char *  filename,
    int  line 
    )
    static

    work for freeing a buffer

    Parameters
    buffermemory buffer storage
    ptrpointer to pointer to the allocated memory buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 3048 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, and BMS_BufMem::used.

    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
    buffermemory buffer storage
    ptrpointer to pointer to the allocated memory buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 3113 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
    buffermemory buffer storage
    ptrpointer to pointer to the allocated memory buffer
    filenamesource file of the function call
    lineline number in source file of the function call

    Definition at line 3136 of file memory.c.

    References BMSfreeBufferMemory_work(), BMSfreeMemory, and NULL.

    ◆ BMSgetNUsedBufferMemory()

    size_t BMSgetNUsedBufferMemory ( BMS_BUFMEM buffer)

    gets number of used buffers

    Parameters
    buffermemory buffer storage

    Definition at line 3156 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
    bufferbuffer memory

    Definition at line 3166 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
    buffermemory buffer storage

    Definition at line 3184 of file memory.c.

    References BMS_BufMem::data, BMS_BufMem::ndata, NULL, BMS_BufMem::size, and BMS_BufMem::used.

    Referenced by SCIPprintMemoryDiagnostic().