内存对齐,内存对齐,位段,大小端

1, 内存对齐

为什么要讨论内存对齐问题呢?因为最近在写BMP头文件的时候出现了些问题,后来发现是结构体中内存对齐所致的。

 

当时情况如下:

16 typedef struct

17 {

18     uint16_t  identifier; 

19     uint32_t  file_size;  

20     uint16_t  reserved1;  

21     uint16_t  reserved2; 

22     uint32_t  bmp_offset; 

23 }BITMAPFILEHEADER;

.

.

.

// 对这个结构体赋值

277     BITMAPFILEHEADER bfh;  

278     memset(&bfh, 0, sizeof(BITMAPFILEHEADER));

279     bfh.identifier = 0x4d42; // 'B','M'

280     bfh.file_size  = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + rgb24_size;

281     bfh.reserved1  = 0;

282     bfh.reserved2  = 0;

283     bfh.bmp_offset = bfh.file_size - rgb24_size;

.

.

.

// 把这个结构体写入到头文件中

304     if (fwrite(&bfh, 14, 1, fp) < 0){

305         perror("write_rgb24_bmp:fwrite BITMAPFILEHEADER:");

306         return -1;

307     }

Tags:  内存对齐大小 此段彼端 内存段 小端对齐 css底端对齐 内存对齐

延伸阅读

最新评论

发表评论