作者:手机用户2502930273 | 来源:互联网 | 2023-07-02 04:27
引言最近突然想到当数组array有2个元素,而访问其array[2]时会不会编译错误的问题,答案是编译的时候不报错,只有运行的时候才报错。感悟以下是我测试用的代码,程序可以正常编译
引言
最近突然想到当数组array有2个元素,而访问其array[2]时会不会编译错误的问题,答案是编译的时候不报错,只有运行的时候才报错。
感悟
以下是我测试用的代码,程序可以正常编译,且编译正确,只是在运行的时候出现程序崩溃。
char array[2] = {'2','3'}; std::cout<
基于上述现象,说明程序在编译的时候没有进行下标越界的检查,当一个程序生成可执行文件的时候,总共经过四步:预处理,编译。汇编,链接。编译的时候进行代码的优化,语法分析,但未进行下标越界检查。