作者:
yam276 ('_')
2025-03-21 16:04:10: 從入門到入門
1. 只要不是借用 非基本類型的變數就會在function使用過轉移所有權 導致原本變數失效
fn output_string(name: String) {
println!("{}", name);
}
fn main()
{
let a = String::from("abc");
output_string(a);
println!("{}", a); // 編譯失敗,a已經轉移所有權給name並失效
}
2. Stack Frame
Stack Frame會記錄該Stack擁有的變數與其內容
Rust會在每個Stack Frame離開後釋放該Stack中擁有所有權的變數
3.下列哪一項不是一種未定義的行為?
A. 使用指向已釋放記憶體的指標
B. 在 stack frame 中具有指向已釋放記憶體的指標
C. 再次釋放相同的記憶體
D. 使用非布林值作為條件if
答案是B
指向已釋放記憶體的指標不是未定義行為
使用已釋放記憶體的指標才是
D純粹是if只吃bool的編譯錯誤