比如开了10个int的数组,然后在大型project中小伙伴们一起改,然后定义到了20个,于是越界了。debug是发现不了的,那我们应该如何知道我们定义的数组越界?
另一个小问题:我们预计要使用10个int的数组,应该开多少个会比较好?
可以这样判断数组的元素数目:
int arr[10];如果对效率要求没那么苛刻,可以使用c++的标准库里的array类或vector类,在debug模式下访问越界时会报错
追问谢谢!那小问题的话,为什么把数组开到15(就是int[15])会比较好?好像效率会高一些?
追答int arr[15]; 在内存中是15个整数连续排列,对其中元素的存取操作编译后生成的汇编指令很少;
array和vector是c++类,其元素的存取都是成员函数实现,编译后的机器指令多了许多,还涉及到函数的调用、函数栈的维护开销等,效率要低了不少。不过现在的电脑、手机、工控机等CPU都很快,如果是做普通应用程序,这种效率差异并不明显,用户基本感觉不到。
谢谢!最后追问一下,15个整数连续排列为什么汇编指令会很少呢...?这是什么原因?
追答连续内存空间的寻址一个汇编指令就可以完成,你可以看看x86的寻址方式,一般的微机原理教科书里都有讲到。