You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序main返回时触发munmap_chunk(): invalid pointer错误的解决

解决munmap_chunk(): invalid pointer错误的原因与修复方案

错误成因

核心问题是数组越界写入破坏了std::vector的内部内存管理结构:

在solve函数的消元循环中,内层j的循环条件写了j < n+1:

for (int j = k+1; j < n+1; j++) {
    A[i][j] -= factor * A[k][j];
}

你的矩阵A是n×n的方阵,每个行向量的大小都是n,合法索引范围是0到n-1。当j循环到n时,A[i][j]属于越界访问,会覆盖vector内部用来管理内存的元数据(比如容量、大小标记)。这就导致程序结束时,vector析构调用operator delete时触发无效指针错误。

修复方法

把j的循环条件改成j < n(你的代码中b是单独向量,并未合并成增广矩阵,不需要访问第n列):

for (int j = k+1; j < n; j++) {
    A[i][j] -= factor * A[k][j];
}

修改后,程序不会再出现越界写入问题,vector的内存管理结构不会被破坏,main函数返回时能正常析构所有容器,不会触发munmap_chunk()错误。

验证结果

修改后运行程序,输出结果正常,且无内存错误提示:

-2.28571
-2.28571
9.71429
10
10
9.71429
-1.14286
-0.0714286
-1.14286
-0.0714286
1.21429

内容的提问来源于stack exchange,提问作者Abdo21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:08:23