JNA-Windows аварийно завершает работу кучи памяти при попытке освободить памятьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JNA-Windows аварийно завершает работу кучи памяти при попытке освободить память

Сообщение Anonymous »

У меня есть простой код golang, который был создан как общая библиотека, которую можно импортировать в Java с помощью JNA и вызывать определенную функцию.
Я провел множество тестов производительности в ОС Unix. и код Java работает очень хорошо, без каких-либо сбоев. Теперь я создал библиотеку Windows DLL, позволяющую другим пользователям запускать программу локально, и она начала давать сбой сразу при попытке освободить память:

Код: Выделить всё

        NativeLibrary.addSearchPath("regex", "C:\\Users\\lala\\github\\test-golang\\lib");
Pointer pr = RegexLibrary.INSTANCE.Matches("1", "[0-9]");
boolean match = pr.getString(0).matches("1");
Native.free(Pointer.nativeValue(pr));
Я работаю локально в своей Windows, и результат сопоставления всегда правильный, независимо от того, что я передаю. Это любопытно, потому что команда Native.free(Pointer.nativeValue(pr)); приводит к сбою моей программы с кодом завершения 0xC0000374, который связан с повреждением кучи, и я не вижу, чтобы эта ошибка происходила в Unix OS или OSX.
Простой обходной путь: запускайте Native.free(Pointer.nativeValue(pr)) только в ОС Unix, потому что я Знайте, что ОС Windows предназначена только для локальной разработки.
Кто-нибудь знает, почему это происходит только в Windows?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ree-memory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»