文章目录
前言
在一些程序语言中,在某些情况下存在着一些未定义行为,其中以C和C++最为著名,在C++中,规定某些操作的行为是未定义的。这些未定义行为往往会导致一些程序的错误问题的出现,作为一名合格的程序员,应该极力避免这些未定义行为的出现,让程序的运行结果不会说出现不确定的情况。
总结
在C++中的常见的未定义行为主要有以下几种:
数组越界问题
在C++中,数组越界问题是一个重灾区,也是很多人容易疏忽的点。比如以下的程序
const int ARR_SIZE = 10;
int arr[ARR_SIZE];
bool func(int i)
{
cout<<arr[i]<<endl;
return true;
}
不对函数的入参进行校验,以判断其下标是否越界,就容易出现数组的越界问题,导致程序在某些情况下可能访问了非法内存进而导致程序崩溃。正确的做法,应该严格校验下标参数,防止出现数组越界问题。如下:
const int ARR_SIZE = 10;
int arr[ARR_SIZE];
bool func(int i)
{
if(i >= 0 && i < ARR_SIZE)
{
cout<<arr[i]<<endl;
return true;
}
r