LWJGL 3 malloc返回null?

时间:2017-11-16 22:12:24

标签: java malloc lwjgl

所以我使用lwjgl 3并尝试使用stb库渲染文本。我正在使用this示例来创建自己的实现。但是当我使用malloc设置STBTTPackedchar.Buffer时,它返回null。如果我将大小更改为3 * 128而不是6 * 128,它可以正常工作。也许这是我对malloc的理解问题?据我所知,malloc以字节的形式分配内存,如果它不能分配该空间内存,则返回null。如果是这种情况,我不明白为什么这会返回null,因为我的计算机中有足够的内存。

这是一个最小的测试用例:

import org.lwjgl.stb.STBTTPackedchar;

public class Test {

    private static STBTTPackedchar.Buffer chardata;

    public static void main(String[] args) {
        chardata = STBTTPackedchar.malloc(6 * 128);

        if (chardata == null) {
            System.out.println("Null");
        } else {
            System.out.println("Not Null");
        }

        chardata.free();
    }

}

1 个答案:

答案 0 :(得分:3)

LWJGL 3.1.3版本中存在一个错误,它影响了结构缓冲区的大小malloc(非calloc)分配。 这已在最新的3.1.4稳定和最新的夜间版本中修复,可以从https://www.lwjgl.org/customize或从oss.sonatype.org的Maven Snapshot存储库下载为3.1.4-SNAPSHOT。 LWJGL 3.1.4版本也可能在今晚/晚上(CET时间)发布。

有关详细信息,请参阅:https://github.com/LWJGL/lwjgl3/commit/c7c94340d6a9796d38b2fb8292fe6d1dbff8ff04

还有当前3.1.3版本的(编辑)发行说明:https://github.com/LWJGL/lwjgl3/blob/master/doc/notes/3.1.3.md#known-issues