如何修复C中的“ munmap_chunk():无效指针”错误?

时间:2019-10-26 19:46:17

标签: c

我编写了以下代码来解决代码战中的问题:

char *series_sum(unsigned long int n){
    double sum=0;
    static char a[10];
    for(int i=1;i<=n;i++){sum=sum+1.0/(3*i-2);}
    sprintf(a,"%.2lf",sum);
    return a;
}

问题很简单,它只希望您打印序列的第n个部分和,并将其作为带2个小数点的字符串(“ a.bc”)返回。 但是我得到了错误:

  

munmap_chunk():无效的指针:0x00000000006031b1

编辑:这是测试功能的代码。

#include <criterion/criterion.h>
#include <stddef.h>

char *series_sum(const size_t n);

Test(ExampleTests, ShouldPassAllTheTestsProvided) {
 {
   const char *expected = "1.00";
   char *received = series_sum(1);
   cr_assert_str_eq(expected, received, "Expected: %s Received: %s", expected, received);
   free(received); received = NULL;
 }

 {
   const char *expected = "1.25";
   char *received = series_sum(2);
   cr_assert_str_eq(expected, received, "Expected: %s Received: %s", expected, received);
   free(received); received = NULL;
 }

 {
   const char *expected = "1.39";
   char *received = series_sum(3);
   cr_assert_str_eq(expected, received, "Expected: %s Received: %s", expected, received);
   free(received); received = NULL;
 }
}

1 个答案:

答案 0 :(得分:0)

由于尚无关于您其他代码的信息,让我推测一下:调用代码的功能类似于:

field1

该免费电话尝试释放静态内容。您可以从malloc获得的指针上调用free。您不应该尝试在静态缓冲区上调用它。

相关问题