大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
引言
最近突然想到当数组array有2个元素,而访问其array[2]时会不会编译错误的问题,答案是编译的时候不报错,只有运行的时候才报错。
感悟
以下是我测试用的代码,程序可以正常编译,且编译正确,只是在运行的时候出现程序崩溃。
char array[2] = {
'2','3'};
std::cout<<array[2]<<std::endl;//编译正常,运行的时候出现问题
基于上述现象,说明程序在编译的时候没有进行下标越界的检查,当一个程序生成可执行文件的时候,总共经过四步:预处理,编译。汇编,链接。编译的时候进行代码的优化,语法分析,但未进行下标越界检查。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186743.html原文链接:https://javaforall.net