栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++编译器中数组越界却不会报错崩溃

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++编译器中数组越界却不会报错崩溃

  平时编码的话数组一般都用STL标准库的vector或map等,很少使用int[10]这种自己写的,今天偶然看到别人代码的奇怪bug,一直找不到原因,后来突然想到是不是数组越界没有报错导致?但又不敢肯定了,因为STL标准库越界直接就崩溃报错了,对于自己写的数组还是测试一下吧。
代码如下:

#include "pch.h"
#include 
#include "Piece.h"

int main()
{
	Piece m_Pieces[16]; 
	for (int i = 0; i < 16; i++)
	{
		m_Pieces[i].init(i);
	}

	int nTemp = -1;
	cout << m_Pieces[nTemp].m_bRed << endl;

	int nPos[5];
	for (int i = 0; i < 4; i++)
	{
		nPos[i] = i;
	}

	int nTemp2 = 6;
	cout << nPos[nTemp] << endl;
	cout << nPos[nTemp2] << endl;

	bool bValue1 = true;
	bool bValue2 = true;
	if (bValue1 == bValue2)
	{
		std::cout << "It is same!n";
	}
	else
	{
		std::cout << "It is different!n";
	}
}


可以看到,无论对于自定义类数组还是int型数组,故意越界取值时并不会提示报错或崩溃,而是输出一个特殊值直接往下运行。记录一下谨记此问题吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号