A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nativelibs4java/nativelibs4java/issues/440 below:

BridJ Memory leak using callbacks which take pointer args · Issue #440 · nativelibs4java/nativelibs4java · GitHub

There is a memory leak when using callbacks which take pointer arguments from native code to java in BridJ

When running the code below, instances of org.bridj.Pointer$OrderedPointer allocated by BridJ are never garbage collected eventually leading to out of memory. Using a callback which takes a non-pointer argument seems to work fine.

liblogger.h

typedef void (*CallbackType)(char*);
void callme(CallbackType);
void run();

liblogger.c

#include "liblogger.h"
CallbackType logger;
void run() {
    for(;;) {
        logger("hello");
    }
}
void callme(CallbackType cb) {
    logger = cb;
}

Main.java

import liblogger.*;
import org.bridj.Pointer;

public class Main {

    public static void main(String[] args) throws Exception {

        LibloggerLibrary.CallbackType callback =
            new LibloggerLibrary.CallbackType() {
                @Override
                public void apply(Pointer<Byte> charPtr) {
                }
            };

        LibloggerLibrary.callme(Pointer.pointerTo(callback));
        LibloggerLibrary.run();
    }

}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4