| extern crate jemallocator; |
| |
| use jemallocator::Jemalloc; |
| use std::alloc::{GlobalAlloc, Layout}; |
| |
| #[global_allocator] |
| static A: Jemalloc = Jemalloc; |
| |
| #[test] |
| fn smoke() { |
| let mut a = Vec::new(); |
| a.push(3); |
| } |
| |
| /// https://github.com/rust-lang/rust/issues/45955 |
| #[test] |
| fn overaligned() { |
| let size = 8; |
| let align = 16; // greater than size |
| let iterations = 100; |
| unsafe { |
| let pointers: Vec<_> = (0..iterations) |
| .map(|_| { |
| let ptr = Jemalloc.alloc(Layout::from_size_align(size, align).unwrap()); |
| assert!(!ptr.is_null()); |
| ptr |
| }) |
| .collect(); |
| for &ptr in &pointers { |
| assert_eq!( |
| (ptr as usize) % align, |
| 0, |
| "Got a pointer less aligned than requested" |
| ) |
| } |
| |
| // Clean up |
| for &ptr in &pointers { |
| Jemalloc.dealloc(ptr, Layout::from_size_align(size, align).unwrap()) |
| } |
| } |
| } |