我编译了这段代码:
// Fix BottomSheetDialog not showing after getting hidden when the user drags it down
myBottomSheetDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) dialogInterface;
FrameLayout bottomSheet = (FrameLayout) bottomSheetDialog
.findViewById(android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_COLLAPSED);
}
});
我得到了这个结果:
// Example program
#include <iostream>
using namespace std;
struct A
{
char a;
};
struct B
{
char b;
int a;
};
struct C
{
int * a;
unsigned char b;
};
int main()
{
cout<< "size of Strcut A:\t"<< sizeof(A)<<endl;
cout<< "size of Strcut B:\t"<< sizeof(B)<<endl;
cout<< "size of Strcut C:\t"<< sizeof(C)<<endl;
cout<< "size of int* : \t"<< sizeof(int*)<<endl;
return 0;
}
现在我想问为什么Strcut B的大小不是5?为什么Struct C的大小不是9? 当内存在嵌入式系统中是重要的时候我应该如何在ARM等其他平台上节省内存?
答案 0 :(得分:1)
Alignment。数据结构的成员(及其总大小)之间填充空白空间,以便加快访问速度并减少当较大类型跨越边界时必需的冗余读取。
答案 1 :(得分:1)
编译器决定添加一些额外的填充位来对齐你的结构。 使用8个数据的功能然后花时间从内存中提取它们要快得多。