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

时间:2018-03-23 17:57:34

标签: c++ segmentation-fault out-of-memory

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

double array[592];

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

2 个答案:

答案 0 :(得分:1)

sizeof为您提供数组占用的字节数,而不是它所包含的元素数。因此,double在您的系统上需要8个字节,结果应该变得清晰。

答案 1 :(得分:0)

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

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