16.3“Segmentation violation”,“Bus error”意味着什么
问题:“Segmentation violation”, “Bus error” 和“General protection fault” 意味着什么?
通常, 这意味着你的程序试图访问不该访问的内存地址, 一般是由于堆栈出错或是不正确的使用指针。可能的原因有: 局部数组溢出(用堆栈分配的自动变量);不小心, 用了空指针(参见问题5.2 和5.15)、未初始化指针、地址未对齐的指针或其它没有适当分配的指针(参见问题7.1 和7.2); malloc 内部被破坏(参见问题7.16); 函数调用参数不匹配, 特别是如果用了指针, 两个可能出错的函数是scanf()(参见问题12.11) 和fprintf() (确定他的第一个参数是FILE *)。
参见问题16.3 和16.4。
通常, 这意味着你的程序试图访问不该访问的内存地址, 一般是由于堆栈出错或是不正确的使用指针。可能的原因有: 局部数组溢出(用堆栈分配的自动变量);不小心, 用了空指针(参见问题5.2 和5.15)、未初始化指针、地址未对齐的指针或其它没有适当分配的指针(参见问题7.1 和7.2); malloc 内部被破坏(参见问题7.16); 函数调用参数不匹配, 特别是如果用了指针, 两个可能出错的函数是scanf()(参见问题12.11) 和fprintf() (确定他的第一个参数是FILE *)。
参见问题16.3 和16.4。