== 11260 ==大小的无效写入4为什么valgrind会输出文件路径而不是错误的行号?
== 11260 ==在0x402872:b2_createPair(在/ home /大卫/文档/编程/ 366终端/ mainout
== 11260 =通过= 0x402BE9:b2_populateBigBucket(在/ home /大卫/文档/编程/ 366端子/ mainout)
== 11260 ==由0x401993:doTads_b2(tads.c:82)
== 11260 == by 0x400E82:main(main.c:159)
== 11260 ==地址0x51d0318是0字节之后大小为8的一个块alloc'd
==在0x4C28F9F 11260 ==:malloc的(vg_replace_malloc.c:236)
== 11260 ==通过0x402866:b2_createPair(在/ home /大卫/文档/编程/ 366终端/ mainout)
== 11260 ==由0x402BE9:b2_populateBigBucket(在/ home /大卫/文档/编程/ 366终端/ mainout)
== 11260 == by 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->节点到= nodeFrom错误 - 但这并不影响结果
的结构看起来像
struct pair2_t
{
int nodeFrom;
int nodeTo;
int distance;
struct pair2_t *previous;
struct pair2_t *next;
};
typedef struct pair2_t pair2;
也许测试malloc的结果是否为NULL。 – 2012-02-04 06:43:43
是的,那不是。 – dwjohnston 2012-02-04 06:55:27
考虑使用fprintf打印到stdout和stderr。不回答你的问题,但它可能会使你的代码更清洁。 – 2012-02-04 07:00:50