invalid(segment fault)也称为 segment fault,指进程需要访问的内存地址不在它的虚拟地址空间范围内,属于越界访问,内核就会报 segment fault 错误。
造成 segment fault 的原因可能有以下几种:
- 栈空间不足 - 分配较大的数组作为局部变量时可能发生
- 堆栈溢出;
- 内存访问越界,如数组下表错误访问越界;
- 使用strcpy/strcat/sprintf/strcmp 等字符串操作函数导致的读写越界,应尽量使用strncpy/strncat/snprintf/strncmp 等函数防止读写越界;
- 非法指针:野指针,错误的指针转换等;
- 多线程读写的数据未加锁保护,或使用了线程不安全的函数。
作者:算法集市
链接:https://zhuanlan.zhihu.com/p/186268691
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
-----------------------------------------------------------
本文来自博客园,作者:小厨房,转载请注明原文链接:https://www.cnblogs.com/erichf/p/13534420.html,否则视为侵权
如有疑问,请站内留言 或加 QQ:②⑨⓪②② ⑦③⑦⑨
-----------------------------------------------------------