| 81 | size_t nr_free() const { return m_nr_free; } |
| 82 | |
| 83 | void* get_chunk_end(void* addr) { |
| 84 | MGB_LOCK_GUARD(m_mtx); |
| 85 | auto iter = m_addr2size.upper_bound(addr); |
| 86 | mgb_assert( |
| 87 | iter != m_addr2size.begin() && |
| 88 | (iter == m_addr2size.end() || iter->first > addr)); |
| 89 | --iter; |
| 90 | void* end = (char*)iter->first + iter->second; |
| 91 | mgb_assert(iter->first <= addr && end > addr); |
| 92 | return end; |
| 93 | } |
| 94 | }; |
| 95 | |
| 96 | class AllocChecker { |