【发布时间】:2011-11-10 05:43:13
【问题描述】:
我有一个使用第三方库的程序(未提供源代码)。
假设我们有一个名为DP_AcquireFingerprint() 的函数。此函数调用将与第三方库交互,以从指纹扫描仪硬件读取指纹图像。
当我直接从main() 调用这个函数时,它工作正常:
int main(int argc, char** argv) {
Matrix* mat;
DP_AcquireFingerprint(&mat); /* Works fine */
}
但是,当隐藏在深层函数调用中时,此函数开始表现得很奇怪。示例:
void func1(Matrix** mat) {
DP_AcquireFingerprint(mat);
}
void func2(Matrix** mat) {
func1(mat);
}
void func3(Matrix** mat) {
func2(mat);
}
void func4(Matrix** mat) {
func3(mat);
}
int main(int argc, char** argv) {
Matrix* mat;
func4(&mat); /* Not working! */
}
特别是,库抱怨缓冲区不足错误,而我很确定我已经在堆中分配了足够的内存来存储指纹图像(在这个函数内部)。
问题是,第一个和第二个代码sn-p有什么区别?如果在不同位置调用函数,是否有可能表现不同?
【问题讨论】:
-
应该在传递给这个函数之前初始化原来的
mat指针,还是这个函数的目的? -
初始化在函数内部完成。
标签: c