对于不存在的内存位置,读取垃圾而不是段错误
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)
给出数组占用的总字节数。
我试图在 C++ 中定义一个数组
double array[592];
我犯了一个错误,使用了 "sizeof" 命令而不是 size 来限制一个一个一个打印元素的循环。因此,循环一直在读取数组索引,直到索引 4736。虽然这些位置不存在,但对于 592 之后的所有位置,我得到的是垃圾而不是分段错误。我想知道为什么我没有遇到分段错误。
sizeof
给出数组占用的字节数,而不是它包含的元素数。因此,由于 double
在您的系统上需要 8 个字节,因此结果应该很清楚。
sizeof(array) // Returns 592 * sizeof(double)
给出数组占用的总字节数。