Fix miniarena
This commit is contained in:
+34
-5
@@ -68,7 +68,7 @@ static void arena_test_2(void)
|
||||
printf("Allocated ptr %p\n", ptr);
|
||||
|
||||
arena_dump(&arena);
|
||||
ArenaCheckpoint checkpoint = arena_temp_begin(&arena);
|
||||
ATemp checkpoint = arena_temp_begin(&arena);
|
||||
ptr = arena_push(&arena, MB(4)+3, 8);
|
||||
MemoryZero(ptr, MB(2));
|
||||
|
||||
@@ -77,7 +77,7 @@ static void arena_test_2(void)
|
||||
ptr = arena_push(&arena, commit_size , 8);
|
||||
MemoryZero(ptr, commit_size );
|
||||
|
||||
ArenaCheckpoint checkpoint2 = arena_temp_begin(&arena);
|
||||
ATemp checkpoint2 = arena_temp_begin(&arena);
|
||||
ptr = arena_push(&arena, 64, 8);
|
||||
MemoryZero(ptr, 64);
|
||||
|
||||
@@ -162,12 +162,41 @@ static void arena_test_4(void)
|
||||
|
||||
arena_free(&arena);
|
||||
}
|
||||
void miniarena_test1(void)
|
||||
{
|
||||
#define arena_size 4096
|
||||
MARENA_DEFINE(arena, arena_size, 8);
|
||||
int i;
|
||||
for (i = 0; ; i++) {
|
||||
void *ptr = marena_push(&arena, 1);
|
||||
if (ptr == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
printf("miniarena_test1,size %u pushed %d bytes first_free %u\n", arena.size, i, arena.first_free);
|
||||
marena_reset(&arena);
|
||||
MTemp checkpoint = marena_temp_begin(&arena);
|
||||
|
||||
void *ptr = marena_push(&arena, arena_size);
|
||||
Assert(ptr != NULL);
|
||||
Assert(arena.first_free == arena_size);
|
||||
MemoryZero(ptr, arena_size);
|
||||
marena_temp_end(&checkpoint);
|
||||
|
||||
printf("miniarena_test1,size %u bytes first_free %u\n", arena.size, arena.first_free);
|
||||
|
||||
Assert(arena.first_free == 0);
|
||||
|
||||
|
||||
|
||||
}
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// arena_test_1();
|
||||
arena_test_2();
|
||||
arena_test_3();
|
||||
arena_test_4();
|
||||
// arena_test_2();
|
||||
// arena_test_3();
|
||||
// arena_test_4();
|
||||
miniarena_test1();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user