MCPcopy Create free account
hub / github.com/Tripwire/tripwire-open-source / Malloc

Method Malloc

src/core/growheap.cpp:100–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98
99
100void* cGrowHeap_i::Malloc(size_t size)
101{
102 size = AlignSizeRequest(size, BYTE_ALIGN);
103
104 ASSERT((size > 0) && (size < mGrowBy));
105
106 if (size >= mGrowBy)
107 return NULL;
108
109 if (mHeaps.empty())
110 {
111 mHeaps.push_back(cHeap(mInitialSize));
112 ASSERT(mHeaps.back().mpData != 0);
113 mCurOff = 0;
114 }
115
116 if (mCurOff + size < mHeaps.back().mSize)
117 {
118 // we have room to add this to the current heap.
119 //
120 ASSERT(mHeaps.back().mpData);
121 int8* ret = mHeaps.back().mpData + mCurOff;
122 mCurOff += size;
123
124 return ret;
125 }
126 else
127 {
128 mHeaps.push_back(cHeap(mGrowBy));
129 ASSERT(mHeaps.back().mpData != 0);
130 mCurOff = 0;
131
132#ifdef _DEUBG
133 void* ret = Malloc(size);
134 ASSERT(ret != 0);
135 return ret;
136#else
137 return Malloc(size);
138#endif
139 }
140}
141
142size_t cGrowHeap_i::AlignSizeRequest(size_t size, size_t alignSize)
143{

Callers 2

util_AllocMemFunction · 0.80
TestGrowHeapFunction · 0.80

Calls 2

cHeapClass · 0.85
emptyMethod · 0.80

Tested by 1

TestGrowHeapFunction · 0.64