调试我的代码后,我收到以下错误:
程序收到信号 SIGSEGV,分段错误。来自/lib/i386-linux-gnu/libc.so.6的fgets()中的0xb7d79a67
谁能向我解释这意味着什么?这是一个使用 CMake 和 OpenGL 构建的项目。
调试我的代码后,我收到以下错误:
程序收到信号 SIGSEGV,分段错误。来自/lib/i386-linux-gnu/libc.so.6的fgets()中的0xb7d79a67
谁能向我解释这意味着什么?这是一个使用 CMake 和 OpenGL 构建的项目。
当一个程序试图访问它没有特权的内存时,它会Linux Kernel
通过发送一个名为 的信号来中断程序SEGSEGV
。在您的fgets
, 可能是您通过输入太多文本超出了为指针分配的内存。信号是Linux Kernel
与程序(正确意义上的进程)通信的一种方式。这是一种例外。
因为,您正在处理文件。值得检查您的文件是否确实存在。可能是您没有读取文件的权限,因此出现错误。
/lib/i386-linux-gnu/libc.so.6
Linux
是您系统上的一个共享库,fgets
函数驻留在其中并且0xb7d79a67
是(我猜)您的程序没有权限的主内存地址可能超出文件长度。
当segmentation-fault(SEGSEGV)
您访问受保护的内存区域或其他程序使用的内存区域时,可能会发生这种情况,因此您的程序没有任何访问权限。
阅读这些文章以获得更好的理解: Segmentation fault 为什么?,调试分段错误