首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么法研“有效值”需要8位?

为什么法研“有效值”需要8位?
EN

Stack Overflow用户
提问于 2016-03-08 01:53:28
回答 2查看 248关注 0票数 0

访问http://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine

使用V位验证数据的有效性。在我看来,只有1位可以验证其有效性,但为什么法研需要8位?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-08 02:23:40

分配是以字节为单位的。也就是说,传递给malloc的整数是要分配的字节数。因此,memcheck每字节只需要一位就可以跟踪是否分配了内存地址。

但是初始化可以在单个位上工作,而不仅仅是在整个字节上。如果字节X的所有位都未初始化,然后执行X = X | (1 << 3),那么现在只初始化一位X。因此,memcheck跟踪每个单独的位是否已经初始化。由于一个字节中有8位(在memcheck支持的所有CPU上),这意味着memcheck每个字节还需要8位来跟踪哪些位已经初始化。

票数 1
EN

Stack Overflow用户

发布于 2016-03-08 01:57:54

就像在这里解释的那样:

最简单的想法是,Memcheck实现了一个与实际CPU相同的合成CPU,除了一个关键的细节。在合成CPU中,由实际CPU处理、存储和处理的每一位(字面上的)数据都有一个相关的“有效值”位,该位表示伴随的位是否具有合法值。在接下来的讨论中,这个位被称为V(有效值)位.

因此,每一位在瓦莱尔测试环境中都有一个对应的有效位-非有效位来跟踪其有效性。这对于位字段来说尤为重要,其中一个位可以表示类似布尔值的东西,只能用一个位表示。

在这一级别上,瓦兰将获得内存分辨率的绝对精度,似乎是为了提供一个良好的数据披肩,以便它能够观察和执行分析。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35857524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档