在C/C++中,当你尝试访问一个数组的某一元素的时候,不会做任何下标是否越界的检查。
如果下标超过了数组定义时候的长度,就会从数组所占空间的最后一个地址一次往后顺延。所以如果数组后面定义了某些元素,这些元素的值可能会改变;如果数组的下标足够大,就会访问到超过程序所拥有的地址空间的地址,会报错:Segmentation fault
这样,那个可变长度的结构体也就很好理解了
本文探讨了C/C++中数组越界访问的问题,详细解释了当数组下标超出定义范围时,程序如何继续访问内存空间及可能引发的后果,如修改相邻变量值或导致Segmentation fault错误。
在C/C++中,当你尝试访问一个数组的某一元素的时候,不会做任何下标是否越界的检查。
如果下标超过了数组定义时候的长度,就会从数组所占空间的最后一个地址一次往后顺延。所以如果数组后面定义了某些元素,这些元素的值可能会改变;如果数组的下标足够大,就会访问到超过程序所拥有的地址空间的地址,会报错:Segmentation fault
这样,那个可变长度的结构体也就很好理解了
1240
4万+
5545

被折叠的 条评论
为什么被折叠?