多出的两个字节是什么啊?

flowingfirefly 2013-11-18 07:31:27


...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adol1111 2013-11-18
  • 打赏
  • 举报
回复
flowingfirefly 2013-11-18
  • 打赏
  • 举报
回复
谢谢斑竹大人
max_min_ 2013-11-18
  • 打赏
  • 举报
回复
引用 2 楼 flowingfirefly 的回复:
输出: 10,4,4 20

struct date {
    char day[10];
    char res[2]; //这里多余了空余2个字节的!内存字节对齐!
                //可以google下,很基础的知识,内存对齐可以提高访问效率   
    int month;
    int year;
};
flowingfirefly 2013-11-18
  • 打赏
  • 举报
回复
输出: 10,4,4 20
flowingfirefly 2013-11-18
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct date {
    char day[10];
    int month;
    int year;
};

int main() {
    struct date *object = malloc(sizeof(struct date));
    strcpy(object->day, "Good day");
    object->month = 6;
    object->year = 2013;
    printf("%d,%d,%d\n", sizeof(object->day), sizeof(object->month), sizeof(object->year));
    printf("%d\n", sizeof(struct date));
    FILE *file = fopen("output", "wb");
    if (file != NULL) {
        fwrite(object, sizeof(struct date), 1, file);
        fclose(file);
    }
    return 0;
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧