首页 文章

一个节点的大小是多少?哪里有数据保存?

提问于
浏览
1

正如问题所暗示的那样,通常节点的大小是多少:

struct node{
   int data;
   node* next;
};

如果struct保存数据和下一个节点的地址,那么指针地址的大小(不是指向的地址)是多少?如果下一个指向NULL会有区别吗?

如果我创建了“新节点”,那么数据(不是指针)保存,堆栈或堆的位置:

node* linkednode= new node;

如果我创建了类节点,答案是否会改变?

2 回答

  • 1

    您可以使用 sizeof() 函数轻松检查它们,不仅适用于 int 和指针变量,还适用于节点本身 . 通常 int 和指针在32位平台上是4个字节,因此这是实现定义的,并且可能在其他平台上有所不同 . node 的总大小可能等于8,但可能不是由于上面指定的原因和\或数据对齐 .

  • 0

    无论成员值是什么,结构的大小都是固定的 . 在这种情况下,它可能是8或16个字节(取决于您是在32位还是64位平台上) . 如果您查看,则会报告此情况 . sizeof(node) .

    根据32位或64位平台的大小差异,是因为指针 . 指针在32位平台上是32位(即4字节),在64位平台上是64位(即8字节) . int 类型在所有平台上通常为32位(4字节),但在嵌入式系统或大型机上可能有所不同 .

    它在64位平台上不是12字节(4 8)的原因是因为对齐 . 编译器将确保指针处于良好的对齐状态,以加快对该成员的访问 .

相关问题