我在代码中遇到一个错误,其中 if() 语句正在检查数组末尾的值。浏览器,
int arrayX [2];
if(arrayX [2])
FunctionCall();
这导致了一个函数调用,由于与上述数组的长度相关的原因,它试图用越界索引下标一个 vector ,从而导致错误。但是,该错误仅在 Xcode 调试器下运行时出现;每当我在终端下运行时,它都没有发生。这让我怀疑当我在终端下运行时,数组外的内存正在被清零或由于其他原因趋于为零。 if 语句每个周期都会针对 80 个不同的“故障”数组进行测试,因此它从不在终端下弹出似乎不太可能是巧合。
需要说明的是,我的问题是:为什么未分配或不相关的内存在终端下运行时会保持为零,而在调试器下运行时却不会。
最佳答案
许多调试器用一些不同的模式填充未使用的内存,以便准确地发生您描述的行为。
关于c++ - 读取数组末尾 : running in terminal vs. 调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390627/