虽然经常使用C++编程,但是说到变量内存,有时也会出现记忆模糊,下面是一些在各种基础面试里面经常出现的变量内存:
32位系统:
char str[] = "hello";
sizeof(str) = 6; //这种是str数组自动分配的内存大小,后边有一个 ’\0‘。
char str[100];
sizeof(str) = 4; //取首地址,和指针大小一样。
sizeof(int) = 4;
sizeof(double) = 8;
sizeof(float) = 4;
sizeof(char) = 1;
sizeof(*p) = 4;
对于结构体的大小计算:
结构体的大小与结构体中变量的最大占用有关。
struct A
{
int a; sizeof(int) = 4 0-3
double b; sizeof(double) = 8
char c; sizeof(char) = 1;
}
变量最大占用为sizeof(double) = 8,所以以8字节对齐:
struct A
{
int a; sizeof(int) = 4 0-3 补齐 另外4个字节
double b; sizeof(double) = 8 补齐0个字节
char c; sizeof(char) = 1; 补齐7个字节
}
sizeof(A) = 24;