现在的位置: 首页 > 综合 > 正文

C语言中不检查数组越界的应用

2018年07月30日 ⁄ 综合 ⁄ 共 379字 ⁄ 字号 评论关闭

 学过图像处理的朋友知道,在处理BMP图片时,用到结构体:

typedef struct tagBITMAPINFO

{

    BITMAPINFOHEADER bmiHeader;

    RGBQUAD          bmiColors[1];

} BITMAPINFO;

相信很多初学者不太理解,在读取BMP文件后,后面用到的颜色信息时,用到bmiColors[N](N>1),明明定义的是bmiColors[1]的啊,呵呵,其实这里是C语言中不检查数组越界的一个应用而已,试想各个BMP文件的颜色信息是不一样的,也就是RGBQUAD结构体个数不定的,视具体的文件而定,如果你将该结构体的数目定下来,那么该结构体就没有通用性了,所以这里只是简单的将数目定为1,使RGBQUAD拥有大小可变的数组,当然在读取文件的时候要注意读取的文件颜色表项的大小,给其分配足够的内存空间。

抱歉!评论已关闭.