44//! Mimalloc is a general purpose, performance oriented allocator built by Microsoft.
55//!
66//! ## Usage
7- //! ```rust
7+ //! ```rust,ignore
88//! use mimalloc::MiMalloc;
99//!
1010//! #[global_allocator]
1616//! heap allocations are encrypted, but this results in a 3% increase in overhead.
1717//!
1818//! In `Cargo.toml`:
19- //! ```rust
19+ //! ```rust,ignore
2020//! [dependencies]
2121//! mimalloc = { version = "*", features = ["no_secure"] }
2222//! ```
@@ -51,7 +51,7 @@ const MIN_ALIGN: usize = 16;
5151/// Drop-in mimalloc global allocator.
5252///
5353/// ## Usage
54- /// ```rust
54+ /// ```rust,ignore
5555/// use mimalloc::MiMalloc;
5656///
5757/// #[global_allocator]
@@ -97,4 +97,43 @@ unsafe impl GlobalAlloc for MiMalloc {
9797
9898 mi_realloc_aligned ( ptr as * const c_void , new_size, align) as * mut u8
9999 }
100+ }
101+
102+ #[ cfg( test) ]
103+ mod tests {
104+ use super :: * ;
105+
106+ #[ test]
107+ fn it_frees_allocated_memory ( ) {
108+ unsafe {
109+ let layout = Layout :: from_size_align ( 8 , 8 ) . unwrap ( ) ;
110+ let alloc = MiMalloc ;
111+
112+ let ptr = alloc. alloc ( layout. clone ( ) ) ;
113+ alloc. dealloc ( ptr, layout) ;
114+ }
115+ }
116+
117+ #[ test]
118+ fn it_frees_zero_allocated_memory ( ) {
119+ unsafe {
120+ let layout = Layout :: from_size_align ( 8 , 8 ) . unwrap ( ) ;
121+ let alloc = MiMalloc ;
122+
123+ let ptr = alloc. alloc_zeroed ( layout. clone ( ) ) ;
124+ alloc. dealloc ( ptr, layout) ;
125+ }
126+ }
127+
128+ #[ test]
129+ fn it_frees_reallocated_memory ( ) {
130+ unsafe {
131+ let layout = Layout :: from_size_align ( 8 , 8 ) . unwrap ( ) ;
132+ let alloc = MiMalloc ;
133+
134+ let ptr = alloc. alloc ( layout. clone ( ) ) ;
135+ let ptr = alloc. realloc ( ptr, layout. clone ( ) , 16 ) ;
136+ alloc. dealloc ( ptr, layout) ;
137+ }
138+ }
100139}
0 commit comments