Implement memory decommit
This commit is contained in:
+33
-3
@@ -162,6 +162,34 @@ static void arena_test_4(void)
|
||||
|
||||
arena_free(&arena);
|
||||
}
|
||||
|
||||
static void arena_test_decommit(void)
|
||||
{
|
||||
TRACEF("\n");
|
||||
|
||||
U32 page_size = platform_page_size();
|
||||
ArenaOptions arena_params = {};
|
||||
U32 arena_size = MB(1) + MemoryBlock_Header_Size;
|
||||
U32 commit_size = KB(64);
|
||||
arena_params.size = arena_size;
|
||||
arena_params.commit_size = commit_size;
|
||||
Arena arena;
|
||||
arena_init(&arena, &arena_params);
|
||||
void *ptr = arena_push(&arena, commit_size * 10, 8);
|
||||
MemoryZero(ptr, commit_size * 10);
|
||||
arena_reset(&arena);
|
||||
|
||||
void *pre_ptr = arena_push(&arena, 5, 4);
|
||||
|
||||
ATemp tmp = arena_temp_begin(&arena);
|
||||
ptr = arena_push(&arena, commit_size * 2 + 13, 8);
|
||||
MemoryZero(ptr, commit_size * 2 + 13);
|
||||
arena_temp_end(&tmp);
|
||||
MemoryZero(pre_ptr, 5);
|
||||
|
||||
arena_free(&arena);
|
||||
}
|
||||
|
||||
void miniarena_test1(void)
|
||||
{
|
||||
#define arena_size 4096
|
||||
@@ -290,8 +318,10 @@ int main(int argc, char *argv[])
|
||||
// arena_test_2();
|
||||
// arena_test_3();
|
||||
// arena_test_4();
|
||||
// miniarena_test1();
|
||||
apool_test();
|
||||
apool_test_autogrow();
|
||||
arena_test_decommit();
|
||||
|
||||
// miniarena_test1();
|
||||
// apool_test();
|
||||
// apool_test_autogrow();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user