gpt4 book ai didi

c - 在 C 中释放一个 mpc_t 数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:18 28 4
gpt4 key购买 nike

我是 C 编程的新手,我找不到解决问题的方法。虽然代码有效(我已经能够将它包含在其他程序中),但当它试图释放 calloc() 分配的内存时,它返回以下错误:

free(): invalid next size (normal):

后跟似乎是内存地址的内容。我正在使用 mpc 库(用于任意精度复数)。这是重复错误的最小程序:

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
#include <mpfr.h>
#include <mpc.h>

int N = 10;
int precision = 512;

int main(void) {
mpc_t *dets2;
dets2 = (mpc_t*)calloc(N-2,sizeof(mpc_t));

for (int i = 0; i<=N-2; i++) {
mpc_init2(dets2[i],512); //initialize all complex numbers
mpc_set_str(dets2[i],"1",0,MPFR_RNDN); //set all the numbers to one
}

free(dets2); //release the memory occupied by those numbers
return 0;
}

感谢您的帮助!

最佳答案

您的 for 循环在 i == N-2 之后中断,但它应该在之前打破。 for 循环中的条件应为 i<N-2而不是 i<=N-2 .

因此您尝试访问超出范围的内存。这导致 undefined behaviour ,因此任何事情都可能发生,包括段错误、自由运行时错误或什么都没有。

关于c - 在 C 中释放一个 mpc_t 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799763/

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