diff options
Diffstat (limited to 'test/pkmem.cpp')
| -rw-r--r-- | test/pkmem.cpp | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/test/pkmem.cpp b/test/pkmem.cpp index 4ef1947..b430438 100644 --- a/test/pkmem.cpp +++ b/test/pkmem.cpp @@ -25,6 +25,11 @@ class FreeTest { pk_mem_bucket_set_client_mem_bucket(this->bkt); } virtual ~FreeTest() { + int i; + for (i = 0; i < this->cnt; ++i) { + if (ptrs[i] == nullptr) continue; + pk_delete(ptrs[i], sz[i], bkt); + } pk_mem_bucket_destroy(this->bkt); } @@ -174,8 +179,9 @@ int main(int argc, char *argv[]) pk_mem_bucket_set_client_mem_bucket(bkt); char *some_dang_string = pk_new_arr<char>(64); + memset(some_dang_string, '\0', 64); - fprintf(stdout, "some_dang_string: %s: %p\n", some_dang_string, (void *)some_dang_string); + fprintf(stdout, "some_dang_string: \"%s\": %p\n", some_dang_string, (void *)some_dang_string); #ifdef PK_MEMORY_DEBUGGER fprintf(stdout, "debug block : size: %zu, data: %p\n", bkt->debug_blocks[0].size, bkt->debug_blocks[0].ptr); @@ -206,9 +212,9 @@ int main(int argc, char *argv[]) { pk_membucket *bkt = pk_mem_bucket_create("misalignment", 1024 * 1024, PK_MEMBUCKET_FLAG_NONE); pk_mem_bucket_set_client_mem_bucket(bkt); - pk_new(1, 1, bkt); - pk_new(1, 64, bkt); - pk_new(9, 1, bkt); + void *ptr1 = pk_new(1, 1, bkt); + void *ptr2 = pk_new(1, 64, bkt); + void *ptr3 = pk_new(9, 1, bkt); fprintf(stdout, "block_head_r: %u\n", bkt->block_head_r); pk_mem_assert(1 == bkt->block_head_r); @@ -222,6 +228,9 @@ int main(int argc, char *argv[]) fprintf(stdout, "blocks[15].size : %li\n", bkt->blocks[15].size); pk_mem_assert(54 == bkt->blocks[15].size); + pk_delete(ptr1, 1, bkt); + pk_delete(ptr2, 1, bkt); + pk_delete(ptr3, 9, bkt); pk_mem_bucket_destroy(bkt); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_misalignment01); @@ -233,9 +242,9 @@ int main(int argc, char *argv[]) { pk_membucket *bkt = pk_mem_bucket_create("misalignment", 1024 * 1024, PK_MEMBUCKET_FLAG_NONE); pk_mem_bucket_set_client_mem_bucket(bkt); - pk_new(1, 1, bkt); - pk_new(1, 64, bkt); - pk_new(9, 16, bkt); + void *ptr1 = pk_new(1, 1, bkt); + void *ptr2 = pk_new(1, 64, bkt); + void *ptr3 = pk_new(9, 16, bkt); fprintf(stdout, "block_head_r: %u\n", bkt->block_head_r); pk_mem_assert(2 == bkt->block_head_r); @@ -255,6 +264,9 @@ int main(int argc, char *argv[]) fprintf(stdout, "blocks[14].size : %li\n", bkt->blocks[14].size); pk_mem_assert(39 == bkt->blocks[14].size); + pk_delete(ptr1, 1, bkt); + pk_delete(ptr2, 1, bkt); + pk_delete(ptr3, 9, bkt); pk_mem_bucket_destroy(bkt); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_misalignment02); @@ -298,6 +310,7 @@ int main(int argc, char *argv[]) * 1st = ptr +00, size 02, memblock { +00, 08 } */ pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); + ft.ptrs[free_index] = nullptr; fprintf(stdout, "block_head_r: %u\n", ft.bkt->block_head_r); pk_mem_assert(3 == ft.bkt->block_head_r); @@ -335,6 +348,7 @@ int main(int argc, char *argv[]) * 1st = ptr +64, size 16, move head ( =32 ), memblock { +02, 06 } memblock { +12, 4 } */ pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); + ft.ptrs[free_index] = nullptr; fprintf(stdout, "block_head_r: %u\n", ft.bkt->block_head_r); pk_mem_assert(2 == ft.bkt->block_head_r); @@ -368,6 +382,7 @@ int main(int argc, char *argv[]) * memblock { +02, 06 } memblock { +12, 52 } */ pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); + ft.ptrs[free_index] = nullptr; fprintf(stdout, "block_head_r: %u\n", ft.bkt->block_head_r); pk_mem_assert(2 == ft.bkt->block_head_r); @@ -401,6 +416,7 @@ int main(int argc, char *argv[]) * memblock { +02, 14 } memblock { +32, 32 } */ pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); + ft.ptrs[free_index] = nullptr; fprintf(stdout, "block_head_r: %u\n", ft.bkt->block_head_r); pk_mem_assert(2 == ft.bkt->block_head_r); @@ -430,6 +446,7 @@ int main(int argc, char *argv[]) // frees [00-18] which gets absorbed into [19-31] // [00-31 memblock pk_delete(ft.ptrs[0], ft.sz[0], ft.bkt); + ft.ptrs[0] = nullptr; fprintf(stdout, "block_head_r: %u\n", ft.bkt->block_head_r); pk_mem_assert(2 == ft.bkt->block_head_r); @@ -571,6 +588,9 @@ int main(int argc, char *argv[]) pk_mem_assert(&ft.bkt->data[0] + 19 == ft.bkt->blocks[15].data); fprintf(stdout, "blocks[15].size : %li\n", ft.bkt->blocks[15].size); pk_mem_assert(14 == ft.bkt->blocks[15].size); + + pk_delete(ptr4, 31, ft.bkt); + pk_delete(ptr5, 1, ft.bkt); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_before); pk_test_pkmem_teardown(); @@ -644,6 +664,10 @@ int main(int argc, char *argv[]) fprintf(stdout, "handle2 - handle1 : %zu\n", diff); pk_mem_assert(diff == 8); + pk_delete(str1, 16, bkt); + pk_delete(str2, 16, bkt); + pk_delete(handle1, sizeof(pk_handle), bkt); + pk_delete(handle2, sizeof(pk_handle), bkt); pk_mem_bucket_destroy(bkt); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_alloc_strings); |
