gpt4 book ai didi

c - 尝试释放指针时出现段错误

转载 作者:行者123 更新时间:2023-11-30 16:28:16 25 4
gpt4 key购买 nike

我有这样的代码

void find_groupings ()

int *bandwidths;
int *execution_time;

bandwidths = (int *)malloc(sizeof(int)*node_count); // node_count is glbl
execution_time = (int *)malloc(sizeof(int)*node_count);
//other mallocs, other code etc

while (condition) {
// lot of code
find_bandwidths(bandwidths);
find_execution_time(execution_time);
//lot of code
}

free(bandwidths);
free(execution_time);

}

“free(execution_time);”行出现代码段错误

Thread 1 "vx_tutorial_exe" received signal SIGSEGV, Segmentation fault.
0xf7dd0cd9 in _int_free (av=0xf7f15780 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:4005
4005 malloc.c: No such file or directory.

我可以保证“execution_time”不会超出 find_execution_time() 内的范围我相信我释放了代码中执行的每个 malloc

还发现,execution_time 的指针值在使用 gdb 在 free() 处崩溃之前是相同的

尝试了 valgrind 但是,它没有帮助,因为程序出现了段错误

这里可能出现什么问题?

最佳答案

整个问题是,在 malloc 中我用错误的类型进行了转换

对于缓冲区,我将其分配为

buffers  = (int *)malloc(sizeof(int)*node_count);

应该是

buffers  = (buffer *)malloc(sizeof(buffer)*node_count);

buffer 是我代码中的一种结构类型。

这太奇怪了,它崩溃的方式是无法根据错误消息找出来的。

谢谢杰里米!和pm100

关于c - 尝试释放指针时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414866/

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