【问题标题】:Advantage of small data types小数据类型的优势
【发布时间】:2011-10-05 03:30:43
【问题描述】:

有人能解释一下像char(8 位)或short(16 位)这样的小数据类型与int(32 位)相比有什么优势(尤其是在 C/C++ 中) .

在我看来,它并没有带来任何优势,尤其是。在 32 位机器上,因为它的字长总是 32 位。它是编译器的事情吗,在某些情况下可以将一些小类型组合在一个寄存器中以节省内存?那么小型数据类型是否仅适用于低于 32 位或/和内存不足的硬件架构?

另外我看到一个新的目标是溢出数据类型,所以我认为不应该轻易使用它......

【问题讨论】:

    标签: types char int short


    【解决方案1】:

    即使机器的字长为32位,并不意味着所有的数据类型都存储在字边界,甚至信息存储的最小单位是字。假设您必须创建一个包含一千个字符的向量。如果你像这样创建它:

    std::vector<char> v(1000);
    

    它将使用大约一千字节(通常)。如果您假设最小存储单元是单词,您可以像这样声明它(认为无论如何每个字符都将使用 32 位单词):

    std::vector<int> v(1000);
    

    但这会给你大约 4 个字节 * 1000,这是之前声明的四倍。

    也就是说,有时,根据您声明类型的方式,它们会被打包,因此它们不会使用单词来存储每条信息。在第一种情况下,vector&lt;char&gt; 的编译器/实现将创建一个 1000 字节的缓冲区来存储所有打包的字符。

    所以,答案是节省内存空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2010-11-03
      • 2018-12-07
      • 2012-03-19
      相关资源
      最近更新 更多