【发布时间】:2014-05-21 18:45:27
【问题描述】:
当我调用这个函数时:
int within(struct key *node, int *value) {
int length = len(node);
if ((value <= node[length-1].data) && (value >= node[0].data)) // Problematic line
return 0;
else if (value > node[length-1].data)
return 1;
else if (value < node[0].data)
return -1;
}
Valgrind 引发此错误消息:
地址 0x51f60a0 没有被堆栈、malloc 或(最近)释放
value 和 node 变量具有正确的值。使用所有变量。那里的内存管理有什么问题?请告诉我,如果 sn-p 没有清除情况。
【问题讨论】:
-
可能您的
len函数返回的长度比实际数组长。 -
调用者可能为
node提供了无效值。 -
@Dan: 或者它可能返回 0。
-
@l159 编译此代码时是否收到任何编译器错误/警告?
-
@rici,你是对的,问题出在stackoverflow.com/questions/3637079/…
标签: c memory-management valgrind