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

目錄

柚子快報(bào)激活碼778899分享:rust學(xué)習(xí)-不安全操作

柚子快報(bào)激活碼778899分享:rust學(xué)習(xí)-不安全操作

http://yzkb.51969.com/

在 Rust 中,不安全代碼塊用于避開(kāi)編譯器的保護(hù)策略

四種不安全操作

解引用裸指針

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

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

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

解引用裸指針

原始指針(raw pointer,裸指針)* 和引用 &T 有類(lèi)似的功能 引用總是安全的,因?yàn)榻栌脵z查器保證了它指向一個(gè)有效的數(shù)據(jù) 解引用不安全,一個(gè)裸指針只能通過(guò)不安全代碼塊執(zhí)行

fn main() {

let raw_p: *const u32 = &10;

unsafe {

assert!(*raw_p == 10);

}

}

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

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

use std::slice;

fn main() {

// 定義一個(gè)包含四個(gè)元素的 Vector

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

// 獲取指向 Vector 對(duì)象的原始指針和長(zhǎng)度

let pointer = some_vector.as_ptr();

let length = some_vector.len();

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

unsafe {

// 通過(guò)原始指針和長(zhǎng)度創(chuàng)建一個(gè) u32 類(lèi)型的不可變 slice

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

// 使用 assert_eq! 宏進(jìn)行斷言,比較 Vector 和轉(zhuǎn)換后的 slice 是否相等

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

}

}

附錄

切片

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

// 將數(shù)組或者向量轉(zhuǎn)為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

柚子快報(bào)激活碼778899分享:rust學(xué)習(xí)-不安全操作

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見(jiàn),查看隱藏內(nèi)容

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

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

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

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄