C语言安全编码之数组索引位的合法范围_C语言教程-查字典教程网
C语言安全编码之数组索引位的合法范围
C语言安全编码之数组索引位的合法范围
发布时间:2016-12-28 来源:查字典编辑
摘要:C语言中的数组索引必须保证位于合法的范围内!示例代码如下:enum{TABLESIZE=100};int*table=NULL;intins...

C语言中的数组索引必须保证位于合法的范围内!

示例代码如下:

enum {TABLESIZE = 100}; int *table = NULL; int insert_in_table(int pos, int value) { if(!table) { table = (int *)malloc(sizeof(int) *TABLESIZE); } if(pos >= TABLESIZE) { return -1; } table[pos] = value; return 0; }

其中:pos为int类型,可能为负数,这会导致在数组所引用的内存边界之外进行写入

解决方案如下:

enum {TABLESIZE = 100}; int *table = NULL; int insert_in_table(size_t pos, int value) { if(!table) { table = (int *)malloc(sizeof(int) *TABLESIZE); } if(pos >= TABLESIZE) { return -1; } table[pos] = value; return 0; }

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类