gpt4 book ai didi

C 错误 : free(): invalid next size (fast):, C 程序在 OSX、Linux 上的不同行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:38 27 4
gpt4 key购买 nike

这个问题已经被问过好几次了,但由于我认为我的情况是我认为更具体:

我有一个 C 程序,它在我的 OSX 系统上运行良好(太大而无法复制)。我已经用 Valgrind 对其进行了测试,并且我没有遗漏任何释放/mallocs/或写入,所有问题都已 100% 解决。

当我现在在外部服务器上通过 ssh 运行程序时,当我运行时没有那么多数据(参见下面的代码,my_length < 1000),它可以正常工作。但是对于更大的数据集,使用 Linux 终端我得到这个错误:

 *** Error in `./a.out': free(): invalid next size (fast): 0x00000000016b9ed0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3e50475cff]
/lib64/libc.so.6[0x3e5047cff8]
./a.out[0x41083c]
./a.out[0x402374]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3e50421d65]
./a.out[0x400e79]
======= Memory map: ========
00400000-00418000 r-xp 00000000 00:4d 89038

[...]

当我在 Solaris 上运行它时,它会提示:

malloc failed

在我分配三维数组的一行:

 int ***A, ***B, ***C;
A = malloc(sizeof(int**)*2); B = malloc(sizeof(int**)*2); C = malloc(sizeof(int**)*2);
int i;
for (i = 0; i < 2; i++) {
A[i] = malloc(sizeof(int*)* my_length);
B[i] = malloc(sizeof(int*)* my_length);
C[i] = malloc(sizeof(int*)* my_length);
for (j = 0; j <= my_length2; j++) {
A[i][j] = malloc(sizeof(int)* my_length2);
B[i][j] = malloc(sizeof(int)* my_length2);
C[i][j] = malloc(sizeof(int)* my_length2);<== malloc failed here??
}
}

my_lengthmy_length2 变得非常非常大!

我越来越绝望了!有人知道我的问题可能是什么吗?

最佳答案

这个问题有太多重复项,很烦人,我找不到适合你的问题。

基本问题是您的程序肯定覆盖了 malloc/free 库使用的内存块跟踪信息。

您程序中的某处内存写入越界。

关于C 错误 : free(): invalid next size (fast):, C 程序在 OSX、Linux 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com