【问题标题】:finding out memory consumption of a structure找出结构的内存消耗
【发布时间】:2019-03-17 13:24:59
【问题描述】:

我试图弄清楚我的结构将占用多少内存。考虑以下代码

   struct tNode{
       short data;
       tnode *left;
       tnode *right;
       tnode *student;    
 }

所以我知道 data 是 2 个字节,但是 *left*right*student 呢,它们将消耗多少内存以及如何计算它。

【问题讨论】:

  • sizeof(tNode)没有给你满意的结果吗?
  • 感谢您提供的有用功能,但我还需要知道它是如何计算出它占用 16 个字节的。@StoryTeller
  • 不是函数,是运算符。如果您现在是第一次看到它,明智的做法是从您的项目中退后一步,花几天时间阅读good C++ book
  • 啊,我明白了。阿里加托

标签: c++ pointers memory structure


【解决方案1】:

您正在寻找sizeof operator

返回类型对象表示的字节大小

示例用法:

#include <iostream>

class tnode;

struct tNode {
       short data;
       tnode *left;
       tnode *right;
       tnode *student;
};

int main()
{

  std::cout << sizeof(tNode) << std::endl;
  return 0;
}

我的机器上的输出:

32

【讨论】:

  • 但是我的电脑正在输出 16 个字节
  • @newprogrammer 输出取决于实现
  • @newprogrammer 在 C++ 中,并非每种类型都被限制为具有固定大小。它们在不同的实现上有所不同。
  • @newprogrammer 那么你的机器可能使用 32 位指针,而 Ayxan 使用 64 位指针。
  • @newprogrammer 出于性能原因,编译器会调整结构的大小。更具体地说,它在结构成员之间填充字节以确保成员对齐。更多信息在这里:en.cppreference.com/w/c/language/object
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多