我正在使用图书馆 libfprint在 ubuntu 上,我试图通过我的 java 代码调用一个函数。
API_EXPORTED struct fp_img *fpi_img_new(size_t length)
{
struct fp_img *img = g_malloc(sizeof(*img) + length);
memset(img, 0, sizeof(*img));
fp_dbg("length=%zd", length);
img->length = length;
return img;
}
我将整数值 5 从我的 Java 代码传递给此函数。当我尝试执行上述功能时,出现以下错误:
GLib-ERROR **: /build/buildd/glib2.0-2.30.0/./glib/gmem.c:170: failed to allocate 3077591024 bytes
我在两台不同的 ubuntu 机器上尝试了相同的代码,但错误仍然存在。我不知道它为什么要为 24+5 长度分配这么多字节。
谁能给我建议任何解决方案?
最佳答案
The source code明确指出:
/* structs that applications are not allowed to peek into */
(...)
struct fp_img;
所以,我不确定你为了编译需要 struct fp_img
大小的东西做了什么:你不应该这样做,因为结构声明是不透明的。
关于java - Glib内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18187529/