c++ - 读取数组末尾 : running in terminal vs. 调试器

标签 c++ arrays terminal

我在代码中遇到一个错误,其中 if() 语句正在检查数组末尾的值。浏览器,

int arrayX [2];
if(arrayX [2])
    FunctionCall();

这导致了一个函数调用,由于与上述数组的长度相关的原因,它试图用越界索引下标一个 vector ,从而导致错误。但是,该错误仅在 Xcode 调试器下运行时出现;每当我在终端下运行时,它都没有发生。这让我怀疑当我在终端下运行时,数组外的内存正在被清零或由于其他原因趋于为零。 if 语句每个周期都会针对 80 个不同的“故障”数组进行测试,因此它从不在终端下弹出似乎不太可能是巧合。

需要说明的是,我的问题是:为什么未分配或不相关的内存在终端下运行时会保持为零,而在调试器下运行时却不会。

最佳答案

许多调试器用一些不同的模式填充未使用的内存,以便准确地发生您描述的行为。

关于c++ - 读取数组末尾 : running in terminal vs. 调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390627/

相关文章:

Linux 重命名功能未正确使用

c++ - 重载 * 运算符 - 必须采用零个或一个参数

c++ - C++ STL vector 保留太多容量会消耗大量内存吗?

php - 在 PHP 中将数组传递给函数而不是单独的值的缺点

unix - 是否有一个字符会占用终端上一条线的整个高度?

Gitlab Pages 守护进程,/home/git 在哪里?

android - 警告 : . ../Android.mk:链接器标志中的非系统库

C++ 未解析的带有模板函数调用的外部符号

javascript - 经典 asp - 由 vbscript 下拉列表填充的 javascript 数组

python - 二维数组中的 NaN 插值。人口稀少