核心转储,但 gdb 无法找到确切的位置
Core Dumps but gdb is not able its find the exact location
假设我有一个数组 A[10] 和其他一些变量
我正在将其初始化为
for(int i=0;i<20;i++) //intentionally 20
A[i]=0;
因此,当您运行此 LIBRARY 时,它将初始化数组而不会出现任何错误,并且也可以访问,但 gdb 会在其他地方提供核心转储(在我的情况下,它显示其他变量的内存已更改)
为什么在数组初始化期间没有提供核心转储?
在
C/C++ 中,你没有保护数组的边界,一旦你访问不属于进程的内存,就会发生崩溃。所以只要你越界,只像其他变量一样在堆栈或堆中写下自己的内存......程序不会崩溃,但其他变量会改变,如果你通过这个改变一个指针,这可能会导致将来的崩溃,因为指针将指向某个随机内存地址
在
编译期间,仅在运行时,对 POD (如原始数组)没有越界错误检查。您正在调用未定义的行为。话虽如此,在C++中更喜欢 std::vector 或 std::array 而不是原始(C 样式)数组。
相关文章:
- 分段故障(堆芯转储)矢量
- Cppcheck生成xml转储文件
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 正在处理故障(堆芯转储)
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 我不知道为什么这段代码会让核心被转储?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 class4.exe.sta
- 核心转储,但 gdb 无法找到确切的位置
- 摘要-使用事件复制/移动核心转储到自定义位置
- 核心转储,但是找不到错误位置,有GDB的错误信息