C++中的预读内存是什么?

8
我看到的一篇文章谈到了由Mozilla开发的Rust编程语言,以及它打算取代C++。Rust的一个优点是缺乏预读内存。Mozilla CTO Brendan Eich说道:"在Rust中没有预读内存,但在C ++中存在这些问题,导致很多浏览器漏洞,而这将被Rust解决。"有趣的是,目前Google上只有4个与“预读内存”短语匹配的搜索结果,全部都指向这篇文章本身。什么是C++中的预读内存,为什么会出现这个问题呢?

11
我认为你需要等待 Brendan Eich 澄清他的意思。据我所知,这个短语在 C++ 方面没有通常理解的含义。 - Jerry Coffin
你能提供文章链接吗? - David
@Dave 当我在谷歌上搜索这句话时,这是唯一出现的结果:http://reviews.cnet.com/8301-3514_7-57577639/samsung-joins-mozillas-quest-for-rust/ - JBentley
在过去的十年中,我们经历了与Java相同类型的事情:大量的炒作,对C++的无知抨击以及程序员们认为他们拥有魔法弹药而遭受的十年挫折。 - Pete Becker
1
看起来原文章已经更新了:“Rust中没有免费的内存读取”,他说,但在C++中有。 - crashmstr
2个回答

10
出现了对该文章的更正。 更正后的引用 如下所示:
“他指出在每年的 CanSecWest 大会上的 Pwn2Own 比赛中,浏览器都易遭受黑客攻击。Rust 中没有“免费内存读取”,但 C++ 中有。这些问题“导致了许多浏览器漏洞”,并将通过 Rust 得到解决,这是一种自编译语言。”
我认为这就是解释。

2
你链接中的引用说“预读内存”(根据原帖),而不是“自由内存读取”。你在哪里看到的? - JBentley
@JBentley:我已经尝试使用各种浏览器(包括无痕模式下的Chrome)打开我的答案中的链接,每次都看到“自由内存读取”。与此同时,问题中的链接显示“预先内存读取”。不知道发生了什么事。 - NPE
2
我看到和 @NPE 一样的东西 - "在 Rust 中没有免费的内存读取",他说。 - crashmstr
1
@JBentley 文章已经进行了更正。更正后的版本为"free memory reads"。原始版本中写着"pre-memory reads" - Mikael Persson
好的,现在我看到它是“自由内存读取”。也许我最初查看的是缓存版本。 - JBentley
显示剩余2条评论

6

这篇文章还包含这段明显错误的引用:

"C ++从设计上来说是不安全的",他说。 "它让您接触到底层的东西",这意味着代码运行在本地,并且不必在CPU可以理解之前进行编译,"但是它是不安全的。

因此,我认为可以肯定地说该文章不可靠,并且可能误传了他的话。


“深入到底层”一直意味着具有对硬件的低级访问权限,而C++确实拥有这种权限。至少可以访问内存地址级别(显然,如果没有编译器扩展,C++内存模型无法访问寄存器级别)。但即使我们采用您的定义,也是正确的。由C++编译的代码可以在CPU上本地运行,不像Java等语言。 - slebetman
@slebetman 我不理解你的评论。我没有提供自己的定义,而我引用的语句表明C++代码可以在未编译的情况下被CPU理解。 - JBentley
啊,好的。这篇文章的作者不知道他在说什么。 - slebetman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接