gpt4 book ai didi

c - malloc() : memory corruption even if i check result of memory allocation function

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:33 25 4
gpt4 key购买 nike

我的项目中有以下代码:

static int* simpleRoute (int* initialRoute, int n, int i, int k) {
int* newRoute = (int*)malloc(n);
if (!newRoute) {
return NULL;
}
for (int j = 0; j < i; j++) {
newRoute[j] = initialRoute[j];
}
for (int j = i; j < k+1; j++) {
newRoute[j] = initialRoute[j];
}
for (int j = k+1; j < n; j++) {
newRoute[j] = initialRoute[j];
}
return newRoute;
}

我一直有这个错误:

0 0x7ffff7a43428    __GI_raise(sig=sig@entry=6) (../sysdeps/unix/sysv/linux/raise.c:54)
1 0x7ffff7a4502a __GI_abort() (abort.c:89)
2 0x7ffff7a857ea __libc_message(do_abort=2, fmt=fmt@entry=0x7ffff7b9e2e0 "*** Error in `%s': %s: 0x%s ***\n") (../sysdeps/posix/libc_fatal.c:175)
3 ?? 0x00007ffff7a8f81e in malloc_printerr (ar_ptr=0x7ffff7dd1b20 <main_arena>, ptr=0x609370, str=0x7ffff7b9b142 "malloc(): memory corruption", action=<optimized out>) (malloc.c:5004)
4 ?? _int_malloc (av=av@entry=0x7ffff7dd1b20 <main_arena>, bytes=bytes@entry=4) (malloc.c:3472)
5 0x7ffff7a915d4 __GI___libc_malloc(bytes=4) (malloc.c:2911)
6 0x40338b simpleRoute(graphe=0x609580, initialRoute=0x609350, i=6, k=1)
7 0x403522 opt2Simple(graphe=0x609580)
8 0x404b60 main()

我不确定是什么导致了这个错误,有什么帮助吗?

最佳答案

您分配了 n 个字节,但您想为 n int 分配空间。 int(通常)超过一个字节。

malloc(n) 更改为 malloc(n*sizeof(int))

(此外,(int*) 是不必要的)

关于c - malloc() : memory corruption even if i check result of memory allocation function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060354/

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