mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-04 22:49:32 +03:00
add is_in_heap_region function
This commit is contained in:
parent
8390c46503
commit
f646cc925d
2 changed files with 12 additions and 1 deletions
|
@ -121,7 +121,6 @@ mi_decl_export void mi_thread_stats_print(FILE* out) mi_attr_noexcept;
|
||||||
typedef void (mi_deferred_free_fun)(bool force, unsigned long long heartbeat);
|
typedef void (mi_deferred_free_fun)(bool force, unsigned long long heartbeat);
|
||||||
mi_decl_export void mi_register_deferred_free(mi_deferred_free_fun* deferred_free) mi_attr_noexcept;
|
mi_decl_export void mi_register_deferred_free(mi_deferred_free_fun* deferred_free) mi_attr_noexcept;
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
// Aligned allocation
|
// Aligned allocation
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
|
@ -196,6 +195,8 @@ typedef bool (mi_cdecl mi_block_visit_fun)(const mi_heap_t* heap, const mi_heap_
|
||||||
|
|
||||||
mi_decl_export bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block_visit_fun* visitor, void* arg);
|
mi_decl_export bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block_visit_fun* visitor, void* arg);
|
||||||
|
|
||||||
|
mi_decl_export bool mi_is_in_heap_region(const void* p) mi_attr_noexcept;
|
||||||
|
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
// Convenience
|
// Convenience
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
|
|
10
src/memory.c
10
src/memory.c
|
@ -104,6 +104,16 @@ static size_t mi_good_commit_size(size_t size) {
|
||||||
return _mi_align_up(size, _mi_os_large_page_size());
|
return _mi_align_up(size, _mi_os_large_page_size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return if a pointer points into a region reserved by us.
|
||||||
|
bool mi_is_in_heap_region(const void* p) {
|
||||||
|
size_t count = mi_atomic_read(®ions_count);
|
||||||
|
for (size_t i = 0; i < count; i++) {
|
||||||
|
uint8_t* start = (uint8_t*)mi_atomic_read_ptr(®ions[i].start);
|
||||||
|
if (start != NULL && (uint8_t*)p >= start && (uint8_t*)p < start + MI_REGION_SIZE) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
Commit from a region
|
Commit from a region
|
||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue