JNI_CreateJavaVM: переполнение буфера, если я выбрасываю исключение в случае сбоя - PullRequest
6 голосов
/ 31 мая 2010

В проекте C ++ я использую API вызова JNI для запуска JVM. Я сделал небольшую обертку вокруг JVM, чтобы я мог использовать все необходимые детали в оригинальном стиле. Пока это прекрасно работает.

Теперь, если JVM не запускается (JNI_CreateJavaVM возвращает значение <0), я хотел бы вызвать исключение в моем коде C ++. Но если я выбрасываю исключение после <code>JNI_CreateJavaVM, я получаю переполнение буфера , Если я вызову исключение без вызова JNI_CreateJavaVM, оно будет работать, как и ожидалось.

Кто-нибудь знает, в чем проблема может быть здесь? Или как это отладить?

Среда: Windows, Visual Studio 2008 JDK: jrockit27.6jdk16005, но бывает и со стандартным SUN

Приветствие Dominik

1 Ответ

2 голосов
/ 21 октября 2010

Похоже, вы бросаете указатель или ссылку на недопустимую память. Хорошая идея - генерировать исключение по ссылке, но убедитесь, что объект не находится в стеке. Если объект был выделен с использованием 'new', вам нужно будет правильно управлять этим (иначе у вас будут утечки). Мой подход состоит в том, чтобы пытаться бросать константные объекты как можно больше.

Помогает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...