【正经题解】结构体内存计算
2024-03-18 16:28:21
发布于:浙江
10阅读
0回复
0点赞
这段代码的主要目的是计算给定结构体的内存大小。它通过读取每个成员的数据类型,计算出每个数据类型的大小,然后按照规定的对齐方式进行计算,最后输出整个结构体的内存大小。
#include <iostream>
#include <string>
using namespace std;
// 函数用于获取不同数据类型的大小
int retSize(string type) {
if (type == "int") {
return 4;
} else if (type == "short") {
return 2;
} else if (type == "char") {
return 1;
} else if (type == "double") {
return 8;
}
}
int n;
int main() {
string type;
int mtype = -1;
cin >> n;
int cnt = 0, dqs = 0;
int pos = 0, rs, ret = 0;
// 循环读入每个成员的数据类型
for (int i = 1; i <= n; i++) {
cin >> type;
rs = retSize(type);
dqs = max(dqs, rs);
if (rs == 8) ret = 8;
else ret = min(rs, 4);
while (dqs != 1 && pos % ret != 0) {
pos++;
}
pos += rs;
}
// 补足对齐到最大数据类型的倍数
while (pos % dqs) pos++;
// 输出结构体的内存大小
cout << pos << endl;
return 0;
}
这里空空如也
有帮助,赞一个