summaryrefslogtreecommitdiff
path: root/test/pkmem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/pkmem.cpp')
-rw-r--r--test/pkmem.cpp38
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);