假设我有一个数组 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/