美文网首页V语言
V语言学习笔记-29不安全代码

V语言学习笔记-29不安全代码

作者: lydiandy | 来源:发表于2020-05-20 00:28 被阅读0次

    不安全代码

    目前这块的文档还没有出来,看源代码应该是;

    1. 标注函数为不安全函数

    所有手动控制内存的函数要标注为unsafe_fn

    [unsafe_fn] //标注为不安全函数
    pub fn (a array) free() {
        //if a.is_slice {
            //return
        //}
        C.free(a.data)
    }
    
    1. unsafe代码块中才能调用不安全函数

      unsafe是新的关键字

    fn my_fn() {
        unsafe {
            //在这里才能调用不安全函数
        }
        //在unsafe代码块之外调用,编译器会警告
    }
    

    在不安全代码块中进行指针运算和多级指针,编译器啥都不管,自己掌控

    fn test_pointer_arithmetic() {
        arr := [1,2,3,4]
        unsafe {
            mut parr := *int(arr.data)
            parr++
            assert 2 == *parr
            parr++
            assert 3 == *parr
            assert *(parr + 1) == 4
        }
    }
    
    fn test_multi_level_pointer_dereferencing() {
        n := 100
        pn := &n
        ppn := &pn
    
        unsafe {
            mut pppn := &ppn
            ***pppn = 300
            pppa := ***int(pppn)
            assert 300 == ***pppa
        }
    
        assert n == 300 // updated by the unsafe pointer manipulation
    }
    

    相关文章

      网友评论

        本文标题:V语言学习笔记-29不安全代码

        本文链接:https://www.haomeiwen.com/subject/svwbohtx.html