关于C++语言中数组越界的问题
各位大侠:C++语言中数组越界属于异常吗,用普通的异常处理能否捕捉?如果普通的异常处理没有效果,应该采用什么手段处理越界问题?小弟被这些问题困扰许久!...
各位大侠:
C++语言中数组越界属于异常吗,用普通的异常处理能否捕捉?
如果普通的异常处理没有效果,应该采用什么手段处理越界问题?
小弟被这些问题困扰许久! 展开
C++语言中数组越界属于异常吗,用普通的异常处理能否捕捉?
如果普通的异常处理没有效果,应该采用什么手段处理越界问题?
小弟被这些问题困扰许久! 展开
4个回答
展开全部
[]操慎伍作符不会抛出异常,所以完银誉全没办法捕锋孝段捉
可以用vector的at()方法,这个函数能抛出out_of_range异常。
可以用vector的at()方法,这个函数能抛出out_of_range异常。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不算是异常
算是代码的bug
一般枯衡告来说 靠好的书写习惯没明主观上进行避免
比如在使用下标前进行一些异常的判断
if(index < len)
... // 执行函数体
else
... // 进行一些log或者异常抛出
当然 如果每拦逗次都这样判断相对是比较冗余的
一般只有在这个index是计算或是外部传进来时 才需要判断
这个只要代码写多了 自己控制好 一般就不会有问题了
算是代码的bug
一般枯衡告来说 靠好的书写习惯没明主观上进行避免
比如在使用下标前进行一些异常的判断
if(index < len)
... // 执行函数体
else
... // 进行一些log或者异常抛出
当然 如果每拦逗次都这样判断相对是比较冗余的
一般只有在这个index是计算或是外部传进来时 才需要判断
这个只要代码写多了 自己控制好 一般就不会有问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二维数组定义的一般形式为:类型简袜说明符 数组耐历名 [常量表达式][常量表达式]
这两个常量表达式分别指定了二维数组的行数和列数,程序编译时据此向内存申请空间。
而引用二维数组的格式为: 数组名[行下标][列下标],行下标和列下标都是从0开始排序。这里的下标和上面的常量表达式意义不同,范围也不同。
例如:
int b[4][5]是定义一个名为b的二维数组,它包含4行5列,共20个元素。如果存放数组b的首地址为p,则内存为数组分配的空间是拦亩激p~p+19;数组b的行下标范围为0~3,列下标范围为0~4,地址p+19存放的元素为b[3][4]。如果要引用b[4][5],由于没有提前向内存申请地址,则会随机指向一个地址,得到一个垃圾数据,无法实现我们的目的,就说是引用下标越界。
这两个常量表达式分别指定了二维数组的行数和列数,程序编译时据此向内存申请空间。
而引用二维数组的格式为: 数组名[行下标][列下标],行下标和列下标都是从0开始排序。这里的下标和上面的常量表达式意义不同,范围也不同。
例如:
int b[4][5]是定义一个名为b的二维数组,它包含4行5列,共20个元素。如果存放数组b的首地址为p,则内存为数组分配的空间是拦亩激p~p+19;数组b的行下标范围为0~3,列下标范围为0~4,地址p+19存放的元素为b[3][4]。如果要引用b[4][5],由于没有提前向内存申请地址,则会随机指向一个地址,得到一个垃圾数据,无法实现我们的目的,就说是引用下标越界。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询