Почему valgrind выводит пути к файлам вместо номера строки для ошибок? - PullRequest
0 голосов
/ 04 февраля 2012

== 11260 == Неверная запись размера 4

== 11260 == в 0x402872: b2_createPair (в / home / Дэвид / Документы / Программирование / 366 терминал / mainout

== 11260 == по 0x402BE9: b2_populateBigBucket (в / home / Дэвид / Документы / Программирование / 366 терминал / Mainout)

== 11260 == по 0x401993: doTads_b2 (tads.c: 82)

== 11260 == по 0x400E82: основной (main.c: 159)

== 11260 == Адрес 0x51d0318 равен 0 байтов после блока размера 8, выделенного

== 11260 == в 0x4C28F9F: malloc (vg_replace_malloc.c: 236)

== 11260 == по 0x402866: b2_createPair (в / home / Дэвид / Документы / Программирование / 366 терминал / mainout)

== 11260 == по 0x402BE9: b2_populateBigBucket (в / home / Дэвид / Документы / Программирование / 366 терминал / Mainout)

== 11260 == по 0x401993: doTads_b2 (tads.c: 82)

== 11260 == по 0x400E82: основной (main.c: 159)

Я к этому не привык - обычно это дает мне номер строки и для первых двух строк.

Также - если вы хотите помочь мне - я не могу понять, почему ему не нравится этот malloc -

pair2* b2_createPair(int nodeFrom, int nodeTo, int distance)
{
    pair2* p = malloc(sizeof(pair2*));
    if (p==NULL)
    {
        printf("Malloc was NULL\n"); fflush(stdout); 
    }
    else
    {
        p->distance = distance;
        p->nodeFrom = nodeFrom;
        p->nodeTo = nodeTo; 
    }

    return p ; 


}

(хорошо - просто обратите внимание, что p-> nodeTo = nodeFrom ошибка - но это не влияет на результат.

структура выглядит как

 struct pair2_t
{
    int nodeFrom;
    int nodeTo;
    int distance;
    struct pair2_t *previous;
    struct pair2_t *next;
};

typedef struct pair2_t pair2;

1 Ответ

0 голосов
/ 04 февраля 2012

Попробуйте:

pair2 *p = malloc(sizeof(pair2));
...

Обязательно free() это в какой-то момент.

...