我正在开发一些基本的数据结构来学习语法和Rust.这是我为堆栈提出的:
#[allow(dead_code)]
mod stack {
pub struct Stack<T> {
data: Vec<T>,
}
impl<T> Stack<T> {
pub fn new() -> Stack<T> {
return Stack { data: Vec::new() };
}
pub fn pop(&mut self) -> Result<T, &str> {
let len: usize = self.data.len();
if len > 0 {
let idx_to_rmv: usize = len - 1;
let last: T = self.data.remove(idx_to_rmv);
return Result::Ok(last);
} else {
return Result::Err("Empty stack");
}
}
pub fn push(&mut self, elem: T) {
self.data.push(elem);
}
pub fn is_empty(&self) …
Run Code Online (Sandbox Code Playgroud) 我目前正在学习 C++,并且正在体验对象的局部范围。
如果我理解正确,请使用以下代码:
void stepOne() {
TestClass t1;
t1.thisIsAInt = 2;}
Run Code Online (Sandbox Code Playgroud)
一旦我们退出 stepOne 方法的作用域,t1 对象就应该从内存中清除。
现在,我想对此进行测试,因此使用调试器获得了对象的地址,一旦我回到main
,我就在从调试器获得的地址上创建了一个指针。
我惊讶地发现指针仍然指向我之前创建的同一个对象。
通常,据我所知,自从我们离开作用域后,对象就会被清除内存。
现在,