你写过程序就会知道各种东西能有多离谱。
我在清理个人文件夹时发现了一个名为''artifact''的文件夹,内有同名的''artifact.sln''和''artifact.cpp''。
其中一段长这样:
int a[11];
for (int i = 0; i < 10; i++) {
a[i] = 0;
}
for (int i = 0; i < 10; i++) {
std::cout << a[i] << ' ';
}
我十分确信这个名为a的数组没有在任何其它地方被应用,因为整个程序就不到100行。但是一旦删除,另一个名为''getlfts''的函数会在运行时报错(这个名为'a'的数组在''main''里)。
stack around the variable 'ls3' was corrupted.
谁能告诉我这两个变量有什么关系?
然后在排查这一出bug的时候,离谱的来了。
在Visual Studio 2022上使用Debug模式时程序报错,Release模式不报错?
在IDE外双击运行Debug不报错,使用Visual Studio Code的组件检测,也没有出现数组越界。
然后我把那一段的注释删掉,重新编译,运行,数组越界没了?????
(重复上述流程)
(重复上述流程)
......
最终,我宣布我无法解决这个问题,哪怕这玩意儿看起来的确没有用,我也不可能删掉它。(反正这串儿代码保证了程序正常运行,那还是留着吧)