硬核解读:为什么Rust的Unsafe关键字有效?

就像生活中许多伟大的事情一样,本文也是源于刁难。Reddit,更确切地说是r/programming,已经让我抓狂了。所以我的目标很简单:我想概要的介绍一下为什么Rust的unsafe关键字有效,而在C/C++中类似的方法却行不通。

本文最初发布于jam1garner的个人博客,由InfoQ中文站翻译并分享。

就像生活中许多伟大的事情一样,本文也是源于刁难。Reddit,更确切地说是r/programming,已经让我抓狂了。所以我的目标很简单:我想概要的介绍一下为什么Rust的unsafe关键字有效,而在C/C++中类似的方法却行不通。

C语言令人头痛之处

和其他许多人一样,我在日常工作中也用到C语言。它不是一种糟糕的语言,我喜欢它,就像我喜欢使用汇编或其他深奥的语言编码一样,我将其看成是一个有趣的、具有挑战性的谜题。我不能说我喜欢维护C语言代码,我也不认为任何人会喜欢长时间这样做。作为安全专家,我认为…在安全性方面,C语言有很多问题。每个人都知道,这不是秘密,我这里不是要告诫你,如果你不用Rust重写一切,一切就都会出问题。

让我们来看一个非常简单的C程序:

const char* get_name() {
    return "jam";
}
int main() {
    printf("name: %s\n", get_name());
    return 0;
}

原文链接:【https://www.infoq.cn/article/iDQcr9gkBqI7UDS8t2iA】。未经作者许可,禁止转载。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章