由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Valgrind报uninitialized value was created by a heap allocat (转载)
相关主题
求GCC高手c里面有什么函数可以
gcc -O请问这个C++程序有什么问题吗
超牛的debug为啥指针读出的数值十分巨大或者十分小?
ask for help about AMD clustermalloc返回的地址指向了正在被其它变量使用的内存
a question about memory.遇到一个非常诡异的bug, vector of vector
G++用-g和-O3编译运行结果竟然不一样how to debug a hidden error
purify和valgrind的比较C 语言,初学者问题(3)
请教一下,C++如何判断未初始化的变量一个古怪的C程序运行错误。
相关话题的讨论汇总
话题: adj话题: 25663话题: valgrind话题: allocat
进入Programming版参与讨论
1 (共1页)
o****i
发帖数: 1706
1
【 以下文字转载自 Linux 讨论区 】
发信人: ouyadi (可乐会捂帮帮众), 信区: Linux
标 题: Valgrind报uninitialized value was created by a heap allocation
发信站: BBS 未名空间站 (Sat Feb 19 12:11:20 2011, 美东)
程序运行正常,可是在测memery leak的时候报上面那个错,具体错误消息如下:
==25663== Conditional jump or move depends on uninitialised value(s)
==25663== at 0x400C9F: add_edge (graph.c:59)
==25663== by 0x40071A: main (main.c:13)
==25663== Uninitialised value was created by a heap allocation
==25663== at 0x4A0515D: malloc (vg_replace_malloc.c:195)
==25663== by 0x400A80: add_vertex (graph.c:22)
==25663== by 0x400DF8: add_edge (graph.c:84)
==25663== by 0x40071A: main (main.c:13)
我的程序用链接表构建一个无向图来解决TSP的.
graph.c:22
for(adj_v=(*vp)->adj_list; adj_v->next!=NULL; adj_v=adj_v->next);
adj_v->next = (adj_vertex_t *)malloc(sizeof(adj_vertex_t));
adj_v=adj_v->next;
adj_v->edge_weight=weight;
我这个该怎么初始化新alloc的memery space呢?因为我马上要加新的节点信息到这个
地方了,看起来应该没问题啊?C语言不太好,请大牛指教
t****t
发帖数: 6806
2
你要学会读信息, 未初始化的内存本身没问题, 一开始分配的都没初始化, 但是如果输
出未初始化的值, 或者依靠未初始化的值跳转就会报错
22行的地方是你分配内存的地方. 59行才是使用这个值的地方.

【在 o****i 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: ouyadi (可乐会捂帮帮众), 信区: Linux
: 标 题: Valgrind报uninitialized value was created by a heap allocation
: 发信站: BBS 未名空间站 (Sat Feb 19 12:11:20 2011, 美东)
: 程序运行正常,可是在测memery leak的时候报上面那个错,具体错误消息如下:
: ==25663== Conditional jump or move depends on uninitialised value(s)
: ==25663== at 0x400C9F: add_edge (graph.c:59)
: ==25663== by 0x40071A: main (main.c:13)
: ==25663== Uninitialised value was created by a heap allocation
: ==25663== at 0x4A0515D: malloc (vg_replace_malloc.c:195)

o****i
发帖数: 1706
3
所有报错的地方都是循环语句,类似于
for(vp = *vtxhead; vp != NULL; vp = vp->next){
是不是说最后vp->next是NULL的时候,Valgrind误认为是uninitialized value,如果是这个问题的话,该怎么解决呢?
1 (共1页)
进入Programming版参与讨论
相关主题
一个古怪的C程序运行错误。a question about memory.
高人指点怎么在embedded sys(atmel 系列)上写内存管理 (转载)G++用-g和-O3编译运行结果竟然不一样
如何解释程序内存占用慢慢变高?purify和valgrind的比较
请教如何初始化这个C data structure Steque的object?请教一下,C++如何判断未初始化的变量
求GCC高手c里面有什么函数可以
gcc -O请问这个C++程序有什么问题吗
超牛的debug为啥指针读出的数值十分巨大或者十分小?
ask for help about AMD clustermalloc返回的地址指向了正在被其它变量使用的内存
相关话题的讨论汇总
话题: adj话题: 25663话题: valgrind话题: allocat