c++ - 核心转储但 gdb 无法找到确切位置

标签 c++ gdb coredump

假设我有一个数组 A[10] 和一些其他变量

我将其初始化为

for(int i=0;i<20;i++) //intentionally 20
    A[i]=0;

所以当你运行这个 LIBRARY 时,它会初始化数组而不会出现任何错误并且访问也是可能的,但是 gdb 在其他地方给出了核心转储(在我的例子中,它显示了内存其他变量已更改)
为什么在数组初始化时不给出core dump?

最佳答案

在 c/c++ 中,您无法防止超出数组边界,一旦您访问不属于该进程的内存,就会发生崩溃。 所以只要你越界并且像其他变量一样只在堆栈或堆中写入你自己的内存......程序不会崩溃,但其他变量会改变,如果你通过这个改变指针可能会导致 future 崩溃,因为指针随后将指向某个随机内存地址

关于c++ - 核心转储但 gdb 无法找到确切位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46726516/

相关文章:

c++ - 通过统一缓冲区对象发送到 GLSL 的数据泄漏到其他绘制调用中 (OpenGL 3.2)

c - 自修改代码,复制/跳入堆失败

c++ - GDB step over function (next) 似乎不起作用

linux - 未生成核心转储文件

c++ - 如何在等待程序启动困惑/GTK+ 时制作加载/介绍动画弹出窗口

c++ - glRotate 和我的矩阵::旋转

c++ - 在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗?

c - 如何从 gdb 读取 fread 值

linux - 如何检查 Linux 内核故障转储中 "USER process"的回溯

c - 将 char* 传递给 pthread 崩溃