我的记忆泄漏在哪里?

时间:2012-08-12 04:44:33

标签: c

有人可以帮我找到内存泄漏吗?我使用valgrind检查泄漏,我无法找到它报告的那些。谢谢!

bigint* bi_create(const char* charint)
{

    int length = 0;
    const char* temp;
    int flag = 0;

    temp = charint;

   while(*charint != '\0')
    {

        length++;
        charint++;            
    }

    char chartoint[length];

    charint = temp;

    //printf("LENGTH = %d \n", length);

    bigint* bi = malloc(sizeof(bigint));

    bi->length = length; 

    int counter = 0;

    bi->initialzero = 0;

    while(*charint != '\0')
    {
        if(*charint == '0'  && flag != 1)
        {
            (bi->initialzero)++;
        }else
        {
            flag = 1;
        }

        chartoint[counter] = *charint;

      //  printf("CHARTOINT = %c \n", chartoint[counter]);
        charint++;
        counter++;

    }

    bi->data = atoi(chartoint);

    printf("DATA = %d \n", bi->data);
   // printf("INITIAL ZERO = %d \n", bi->initialzero);

    return bi;
}

2 个答案:

答案 0 :(得分:3)

此功能没有内存泄漏。但是,如果调用者没有释放由此函数分配的内存,则它将被泄露。

答案 1 :(得分:2)

在你的函数中有一个malloc

bigint* bi = malloc(sizeof(bigint));

调用此功能时:

bigint my_big_int = bi_create(my_string);

离开之前不要忘记free

free(my_big_int);

就是这样!