44 {
45 const std::size_t actualSize = size + alignment;
46 char* pUnalignedChunk = new char[actualSize];
47 char* pAlignedChunk =
alignPointer(pUnalignedChunk, alignment);
48 if (pAlignedChunk == pUnalignedChunk) {
49
50
51 pAlignedChunk += alignment;
52 }
53
54
55
56 std::ptrdiff_t shift = pAlignedChunk - pUnalignedChunk;
57
58 assert(shift > 0 && shift <= 256);
59 pAlignedChunk[-1] = static_cast<char>(shift & 0xFF);
60 return static_cast<void*>(pAlignedChunk);
61 }
T * alignPointer(T *ptr, std::size_t alignment)
Definition: AlignedMemoryResource.cpp:38