java - Glib内存分配错误

标签 java c glib memset

我正在使用图书馆 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/

相关文章:

c++ - glib 的 GAsyncQueue 等同于 C++?

java - 如何消除E Zygote?

java - 如何获取 selenium 上所有打开的窗口和浏览器的处理程序?

c - 汇编程序和 C 编程 linux -m32(来自汇编程序寄存器的字符字节)

c - 为什么 C 中的 64 位指针只使用 4 个字节而不是预期的 8 个字节?

c++ - 上下文切换是否每次都有效,还是会导致意外行为?

Java:使用局部变量的匿名内部类

java - 如何修复 java.lang.arrayindexoutofboundsexception : 0?

mingw - 如何使用MinGW运行./configure?

c - 用 g_unix_signal_add 添加后不调用中断句柄