c++ - 使用 gcc6.2.0 & gcc8.3.0 编译将获得局部变量的差异对齐
问题描述
#include <iostream>
struct foo {
char c[12];
};
int main()
{
foo fa;
foo fb;
std::cout << &fa << "\n";
std::cout << &fb << "\n";
}
使用GCC 6.2,输出:0x7fff67cd1ff0 0x7fff67cd1fe0 相差16字节
使用GCC 8.3,输出:0x7ffc5fe3cf14 0x7ffc5fe3cf08 相差12个字节
似乎 gcc6.2.0 与 gcc8.3.0 具有不同的默认堆栈对齐方式。而且我也试过-mpreferred-stack-boundary=4,但是好像不行。
我想消除 gcc6.2.0 和 gcc8.3.0 之间的区别,谁能告诉我,如果某些选项可以禁用它,谢谢。
解决方案
推荐阅读
- javascript - Javascript 异步性质
- regex - Lucene Regex 用于字母数字匹配,但不是所有数字
- javascript - 是否可以将 keyup 功能替换为按钮单击功能?
- apache-spark - 如何获取 Azure Databricks 笔记本运行详细信息
- javascript - 如何在 JAVASCRIPT 的对象中添加键值对?
- javascript - 如何正确地将德语日期字符串转换为日期?
- json - 从多级 JSON 中获取数据
- swift - 在 DatePicker-swift 中限制小时和分钟?
- html - 如何让我的 h2 元素出现在我的标题元素下?
- javascript - 使用 JavaScript 在默认操作系统浏览器中打开 url