Beispiel #1
0
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());
}
Beispiel #2
0
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());
}