18 #include "alignment.h" 50 inline void *
operator new(
size_t _size) {
return operator new(_size, ALIGNMENT); };
57 void *
operator new(
size_t _size,
size_t _alignment);
63 inline void *
operator new[](
size_t _size) {
return operator new(_size, ALIGNMENT); };
70 inline void *
operator new[](
size_t _size,
size_t _alignment) {
return operator new(_size, _alignment); }
77 void operator delete(
void *_ptr,
size_t _size);
84 inline void operator delete[](
void *_ptr,
size_t _size) {
operator delete(_ptr, _size); }
88 void *default_mem_interface::operator
new(
size_t _size,
size_t _alignment)
90 metadata_type metadata = { 0 };
91 metadata.space = _size +
sizeof(metadata_type) + _alignment;
92 profile::memory* profile = get<profile::memory, default_mem_interface>();
93 profile->allocate_begin(metadata.space,
false);
94 void *raw_pointer = malloc(metadata.space);
95 profile->allocate_end(&raw_pointer, metadata.space,
false);
96 ts_assert(raw_pointer);
97 void *aligned_pointer = std::align(_alignment, _size +
sizeof(metadata_type), raw_pointer, metadata.space);
98 ts_assert(aligned_pointer);
99 *(metadata_type *)((
char *)aligned_pointer + _size) = metadata;
100 return aligned_pointer;
103 void default_mem_interface::operator
delete(
void *_ptr,
size_t _size)
105 size_t alignment = ALIGNMENT;
106 void *aligned_pointer = _ptr;
107 metadata_type *metadata = (metadata_type *)((
char *)aligned_pointer + _size);
109 (
void *)((
char *)aligned_pointer - (_size +
sizeof(metadata_type) + alignment - metadata->space));
114 #define task_scheduler_default_mem_interface_catch_all_allocations() \ 115 default_mem_interface gDefaultMemInterface; \ 116 void *operator new(size_t n) { return gDefaultMemInterface.operator new(n); } \ 117 void operator delete(void *p, size_t n) throw() { gDefaultMemInterface.operator delete(p, n); } \ 118 void *operator new[](size_t n) { return gDefaultMemInterface.operator new[](n); } \ 119 void operator delete[](void *p, size_t n) throw() { gDefaultMemInterface.operator delete[](p, n); }
Class stl_allocator.
Definition: allocator.h:16
Definition: profilebase.h:128