欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:rust學習-不安全操作

柚子快報激活碼778899分享:rust學習-不安全操作

http://yzkb.51969.com/

在 Rust 中,不安全代碼塊用于避開編譯器的保護策略

四種不安全操作

解引用裸指針

通過 FFI (Foreign Function Interface,外部語言函數(shù)接口)調(diào)用函數(shù)

調(diào)用不安全的函數(shù)

內(nèi)聯(lián)匯編(inline assembly)

解引用裸指針

原始指針(raw pointer,裸指針)* 和引用 &T 有類似的功能 引用總是安全的,因為借用檢查器保證了它指向一個有效的數(shù)據(jù) 解引用不安全,一個裸指針只能通過不安全代碼塊執(zhí)行

fn main() {

let raw_p: *const u32 = &10;

unsafe {

assert!(*raw_p == 10);

}

}

調(diào)用不安全函數(shù)

使用了 Rust 的 unsafe 特性 從原生指針中創(chuàng)建 slice 是不安全的,需要手動來確保指針和長度的正確性

use std::slice;

fn main() {

// 定義一個包含四個元素的 Vector

let some_vector = vec![1, 2, 3, 4];

// 獲取指向 Vector 對象的原始指針和長度

let pointer = some_vector.as_ptr();

let length = some_vector.len();

// 不安全操作,使用unsafe塊

unsafe {

// 通過原始指針和長度創(chuàng)建一個 u32 類型的不可變 slice

let my_slice: &[u32] = slice::from_raw_parts(pointer, length);

// 使用 assert_eq! 宏進行斷言,比較 Vector 和轉換后的 slice 是否相等

assert_eq!(some_vector.as_slice(), my_slice);

}

}

附錄

切片

&[u32] 是一個不可變的切片類型,也稱為引用切片(slice reference) 用于表示一個基于某個 u32 類型的數(shù)組或向量的引用部分 它由一個指向數(shù)據(jù)的指針和一個長度值組成 指針指向數(shù)組或向量中第一個元素的地址 長度則表示這個切片包含的元素數(shù)目 常用于接收函數(shù)的參數(shù)/返回函數(shù)的結果

// 將數(shù)組或者向量轉為slice切片

fn fn_name(slice: &[u32]) -> u32 {

let mut sum = 0;

for i in 0..slice.len() {

sum += slice[i];

}

sum

}

fn main() {

let array = [1

柚子快報激活碼778899分享:rust學習-不安全操作

http://yzkb.51969.com/

推薦閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19090296.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄