<分区>
我正在尝试回答有关以下代码的测验:
struct B {
int _arr[5];
};
struct A{
struct B* _b;
};
#include <stdlib.h>
int main(){
struct A arr[5];
struct A * a = (struct A*)malloc(sizeof (struct A));
return 0;
}
我试图了解在程序堆栈上分配了多少内存(以字节为单位)。
所以我首先使用了以下(可能是错误的)逻辑:
- struct B 的计算大小 = sizeof(int) * 5 = 20;
- 结构 A 的计算大小 = sizeof(B) = 20
我知道 2
实际上是错误的,因为当我打印 sizeof(B) 时我得到了一个令人惊讶的 8。我真的不明白为什么。
无论如何,要了解在堆栈上分配了多少内存:
arr
的大小按照我的逻辑是20 * 5 = 100;- 关于*a,我真的不知道。打印
sizeof(a)
显示 8,但我还是不明白为什么。 - 总和是108
但实际答案是 24 :/ 我错过了什么?
谢谢!