TEST(StackAllocator, marker) { StackAllocator allocator; void *ptr1 = allocator.Malloc(10); void *ptr2 = allocator.Malloc(20); StackAllocator::Marker makrer_a = allocator.GetMarker(); int remain_size_1 = allocator.remain_size(); void *ptr3 = allocator.Malloc(30); void *ptr4 = allocator.Malloc(400); allocator.FreeToMarker(makrer_a); EXPECT_EQ(remain_size_1, allocator.remain_size()); }
TEST(StackAllocator, basic_malloc_free) { StackAllocator allocator; EXPECT_EQ(allocator.stack_size(), allocator.remain_size()); const int header_size = allocator.GetAllocHeaderSize(); void *ptr1 = allocator.Malloc(10); EXPECT_EQ(allocator.stack_size() - (10 + header_size), allocator.remain_size()); void *ptr2 = allocator.Malloc(20); EXPECT_EQ(allocator.stack_size() - (20 + 10 + header_size * 2), allocator.remain_size()); EXPECT_NE(20, (uchar*)ptr2 - (uchar*)ptr1); allocator.Free(ptr2); EXPECT_EQ(allocator.stack_size() - (10 + header_size), allocator.remain_size()); allocator.Free(ptr1); EXPECT_EQ(allocator.stack_size(), allocator.remain_size()); }