refactor(allocator): made seperate allocator function for malloc
This commit is contained in:
parent
bba9be1c9c
commit
00b6aaa735
2 changed files with 26 additions and 6 deletions
|
|
@ -24,10 +24,13 @@
|
|||
#define HALLOCY_ALLOCATOR
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "../Utils/Error.h"
|
||||
|
||||
void *hallocy_malloc(size_t size);
|
||||
void *hallocy_allocate(size_t size, bool zero_memory);
|
||||
|
||||
static inline void *hallocy_malloc(size_t size) { return hallocy_allocate(size, false); }
|
||||
HallocyError hallocy_free(void *pointer);
|
||||
|
||||
#endif
|
||||
|
|
@ -21,8 +21,7 @@
|
|||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
#include "../../Include/Hallocy/Core/Allocator.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "../../Include/Hallocy/Core/Memory.h"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
|
|
@ -70,7 +69,7 @@ static BOOL CALLBACK hallocy_initialize_mutex(PINIT_ONCE init_once, PVOID parame
|
|||
}
|
||||
#endif
|
||||
|
||||
void *hallocy_malloc(size_t size) {
|
||||
void *hallocy_allocate(size_t size, bool zero_memory) {
|
||||
if (page_size == 0) {
|
||||
#if defined(_WIN32)
|
||||
SYSTEM_INFO system_info;
|
||||
|
|
@ -102,6 +101,10 @@ void *hallocy_malloc(size_t size) {
|
|||
}
|
||||
|
||||
memory_pointer->next = NULL;
|
||||
if (zero_memory) {
|
||||
hallocy_set_memory(memory_pointer + 1, 0, aligned_size - sizeof(HallocyMemoryHeader));
|
||||
}
|
||||
|
||||
return (void*)(memory_pointer + 1);
|
||||
}
|
||||
|
||||
|
|
@ -114,7 +117,12 @@ void *hallocy_malloc(size_t size) {
|
|||
hallocy_heap = GetProcessHeap();
|
||||
}
|
||||
|
||||
memory_pointer = HeapAlloc(hallocy_heap, 0, aligned_size);
|
||||
if (zero_memory) {
|
||||
memory_pointer = HeapAlloc(hallocy_heap, HEAP_ZERO_MEMORY, aligned_size);
|
||||
} else {
|
||||
memory_pointer = HeapAlloc(hallocy_heap, 0, aligned_size);
|
||||
}
|
||||
|
||||
if (memory_pointer == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -162,6 +170,10 @@ void *hallocy_malloc(size_t size) {
|
|||
#endif
|
||||
|
||||
memory_pointer->next = NULL;
|
||||
if (zero_memory) {
|
||||
hallocy_set_memory(memory_pointer + 1, 0, aligned_size - sizeof(HallocyMemoryHeader));
|
||||
}
|
||||
|
||||
return (void*)(memory_pointer + 1);
|
||||
}
|
||||
|
||||
|
|
@ -174,7 +186,12 @@ void *hallocy_malloc(size_t size) {
|
|||
hallocy_heap = GetProcessHeap();
|
||||
}
|
||||
|
||||
memory_pointer = HeapAlloc(hallocy_heap, 0, aligned_size);
|
||||
if (zero_memory) {
|
||||
memory_pointer = HeapAlloc(hallocy_heap, HEAP_ZERO_MEMORY, aligned_size);
|
||||
} else {
|
||||
memory_pointer = HeapAlloc(hallocy_heap, 0, aligned_size);
|
||||
}
|
||||
|
||||
if (memory_pointer == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue