一道关于内存分配的面试题:看一看这个sizeof是多少?
面试 c 内存分配 sizeof
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct {
int key;
double num;
char name[9];
int age;
} Student;
Student s = {001, 999, "darthvade", 23};
printf("%d\n", sizeof(s));
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct {
int key;
double num;
char name[9];
int age;
} Student0;
printf("%d\n", sizeof(Student0));
#pragma pack(1)
typedef struct {
int key;
double num;
char name[9];
int age;
} Student1;
printf("%d\n", sizeof(Student1));
#pragma pack(2)
typedef struct {
int key;
double num;
char name[9];
int age;
} Student2;
printf("%d\n", sizeof(Student2));
#pragma pack(4)
typedef struct {
int key;
double num;
char name[9];
int age;
} Student4;
printf("%d\n", sizeof(Student4));
#pragma pack(8)
typedef struct {
int key;
double num;
char name[9];
int age;
} Student8;
printf("%d\n", sizeof(Student8));
#pragma pack(16)
typedef struct {
int key;
double num;
char name[9];
int age;
} Student16;
printf("%d\n", sizeof(Student16));
return 0;
}
//32
//25
//26
//28
//32
//32