diff --git a/src/main.rs b/src/main.rs index 1bf52aee6b86a55616cca99b50f765a8c5452bf5..fb3a7bd9a7f5c8b95d02768a05273fd75a7daecf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,11 +76,16 @@ where for (index, value) in free.iter_mut().enumerate() { *value = index + 1; } + *unsafe { self.init.get_mut_unchecked() } = true; + println!("init : free {:?}", unsafe { self.free.get_mut_unchecked() }); } fn dealloc(&self, index: usize) { unsafe { + if !*self.init.get_mut_unchecked() { + panic!(); + } self.free.get_mut_unchecked()[index] = *self.head.get_mut_unchecked(); *self.head.get_mut_unchecked() = index; } @@ -89,6 +94,9 @@ where fn alloc(&'static self) -> Result<Box<T, S>, ()> { unsafe { + if !*self.init.get_mut_unchecked() { + panic!(); + } let index = *self.head.get_mut_unchecked(); println!("index {}", self.head.get_mut_unchecked()); println!("head {}", self.head.get_mut_unchecked());