51Degrees Common C/C++  4.1

A shared functionality library that is used by 51Degrees products

memory.h

1 /* *********************************************************************
2  * This Source Code Form is copyright of 51 Degrees Mobile Experts Limited.
3  * Copyright 2019 51 Degrees Mobile Experts Limited, 5 Charlotte Close,
4  * Caversham, Reading, Berkshire, United Kingdom RG4 7BY
5  *
6  * This Source Code Form is subject to the terms of the Mozilla Public
7  * License, v. 2.0.
8  *
9  * If a copy of the MPL was not distributed with this file, You can obtain
10  * one at http://mozilla.org/MPL/2.0/.
11  *
12  * This Source Code Form is "Incompatible With Secondary Licenses", as
13  * defined by the Mozilla Public License, v. 2.0.
14  * ******************************************************************** */
15 
27 #ifndef FIFTYONE_DEGREES_MEMORY_H_INCLUDED
28 #define FIFTYONE_DEGREES_MEMORY_H_INCLUDED
29 
30 #include <stdlib.h>
31 #include <stdbool.h>
32 #include "data.h"
33 #include "threading.h"
34 #include "tree.h"
35 
36 #ifdef __cplusplus
37 #define EXTERNAL extern "C"
38 #else
39 #define EXTERNAL
40 #endif
41 
42 #ifdef _MSC_VER
43 #define FIFTYONE_DEGREES_CALL_CONV __cdecl
44 #else
45 #define FIFTYONE_DEGREES_CALL_CONV
46 #endif
47 
51 typedef struct fiftyone_degrees_memory_reader_t {
52  byte *startByte;
53  byte *current;
54  byte *lastByte;
55  long length;
57 
66  size_t advanceBy);
67 
72 EXTERNAL void* fiftyoneDegreesMemoryStandardMalloc(size_t __size);
73 
80 EXTERNAL void* fiftyoneDegreesMemoryTrackingMalloc(size_t __size);
81 
88 EXTERNAL void fiftyoneDegreesMemoryTrackingFree(void *__ptr);
89 
94 EXTERNAL void fiftyoneDegreesMemoryStandardFree(void *__ptr);
95 
103 EXTERNAL size_t fiftyoneDegreesMemoryTrackingGetMax();
104 
111 
117 EXTERNAL void fiftyoneDegreesMemoryTrackingReset();
118 
125 EXTERNAL void *(FIFTYONE_DEGREES_CALL_CONV *fiftyoneDegreesMalloc)(size_t __size);
126 
132 EXTERNAL void (FIFTYONE_DEGREES_CALL_CONV *fiftyoneDegreesFree)(void *__ptr);
133 
138 #endif
EXTERNAL size_t fiftyoneDegreesMemoryTrackingGetAllocated()
Gets the current number of bytes allocated using the tracking malloc and free methods.
Definition: memory.c:154
long length
Length of the file in bytes.
Definition: memory.h:55
EXTERNAL void fiftyoneDegreesMemoryTrackingFree(void *__ptr)
Frees memory allocated using the fiftyoneDegreesMemoryTrackingMalloc method, noting that it has now b...
Definition: memory.c:119
EXTERNAL void fiftyoneDegreesMemoryStandardFree(void *__ptr)
Frees memory using the standard free method.
Definition: memory.c:115
EXTERNAL void(* fiftyoneDegreesFree)(void *__ptr)
Pointer to the method used to free memory.
Definition: memory.h:132
Used to read data from memory in a similar manner to a file handle.
Definition: memory.h:51
EXTERNAL size_t fiftyoneDegreesMemoryTrackingGetMax()
Gets the maximum total number of bytes that have been allocated using the fiftyoneDegreesMemoryTracki...
Definition: memory.c:150
byte * startByte
The first byte in memory.
Definition: memory.h:52
byte * current
The current byte being read from.
Definition: memory.h:53
EXTERNAL void *(* fiftyoneDegreesMalloc)(size_t __size)
Pointer to the method used to allocate memory.
Definition: memory.h:125
EXTERNAL void * fiftyoneDegreesMemoryStandardMalloc(size_t __size)
Allocates memory using the standard malloc method.
Definition: memory.c:63
EXTERNAL void * fiftyoneDegreesMemoryTrackingMalloc(size_t __size)
Allocates memory while keeping track of the memory which has been allocated using this method since c...
Definition: memory.c:72
byte * lastByte
The maximum byte that can be read from.
Definition: memory.h:54
EXTERNAL void fiftyoneDegreesMemoryTrackingReset()
Resets the memory trackers keeping track of the data allocated using the fiftyoneDegreesMemoryTrackin...
Definition: memory.c:158
bool fiftyoneDegreesMemoryAdvance(fiftyoneDegreesMemoryReader *reader, size_t advanceBy)
Used to read continuous memory checking for buffer over or under runs.
Definition: memory.c:50