mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-21 06:19:31 +03:00
Add tests to check "freed memory fill" behaviour in debug mode
This commit is contained in:
parent
5622af438b
commit
b5f4f48a87
1 changed files with 28 additions and 0 deletions
|
@ -79,6 +79,7 @@ bool test_stl_allocator2(void);
|
|||
bool check_zero_init(uint8_t* p, size_t size);
|
||||
#if MI_DEBUG >= 2
|
||||
bool check_debug_fill_uninit(uint8_t* p, size_t size);
|
||||
bool check_debug_fill_freed(uint8_t* p, size_t size);
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
@ -352,6 +353,22 @@ int main(void) {
|
|||
result &= check_debug_fill_uninit(p, malloc_size);
|
||||
mi_free(p);
|
||||
});
|
||||
|
||||
|
||||
CHECK_BODY("fill-freed-small", {
|
||||
size_t malloc_size = MI_SMALL_SIZE_MAX / 2;
|
||||
uint8_t* p = (uint8_t*)mi_malloc(malloc_size);
|
||||
mi_free(p);
|
||||
// First sizeof(void*) bytes will contain housekeeping data, skip these
|
||||
result = check_debug_fill_freed(p + sizeof(void*), malloc_size - sizeof(void*));
|
||||
});
|
||||
CHECK_BODY("fill-freed-large", {
|
||||
size_t malloc_size = MI_SMALL_SIZE_MAX * 2;
|
||||
uint8_t* p = (uint8_t*)mi_malloc(malloc_size);
|
||||
mi_free(p);
|
||||
// First sizeof(void*) bytes will contain housekeeping data, skip these
|
||||
result = check_debug_fill_freed(p + sizeof(void*), malloc_size - sizeof(void*));
|
||||
});
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -554,4 +571,15 @@ bool check_debug_fill_uninit(uint8_t* p, size_t size) {
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool check_debug_fill_freed(uint8_t* p, size_t size) {
|
||||
if(!p)
|
||||
return false;
|
||||
|
||||
bool result = true;
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
result &= p[i] == MI_DEBUG_FREED;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue