FYI: U++ allocator does have means to return the size of allocated block, unfortunately that can be bigger than the size requested by MemoryAlloc, so GetCount implemented as GetMemoryBlockSize(ptr) / sizeof(T) would often return bigger than correct number. So that realistically leaves storing size as second member variable (+8 bytes), which so far was not worth it.