对于不存在的内存位置,读取垃圾而不是段错误

Reading garbage instead of segfault for non-existant memory locations

我试图在 C++ 中定义一个数组

double array[592];

我犯了一个错误,使用了 "sizeof" 命令而不是 size 来限制一个一个一个打印元素的循环。因此,循环一直在读取数组索引,直到索引 4736。虽然这些位置不存在,但对于 592 之后的所有位置,我得到的是垃圾而不是分段错误。我想知道为什么我没有遇到分段错误。

sizeof 给出数组占用的字节数,而不是它包含的元素数。因此,由于 double 在您的系统上需要 8 个字节,因此结果应该很清楚。

sizeof(array) // Returns 592 * sizeof(double)

给出数组占用的总字节数。