2010-05-31 8 views
6

Bir C++ projesinde, JVM'yi başlatmak için JNI çağırma API'sini kullanıyorum. JVM'nin yanına küçük bir ambalaj hazırladım, böylece OO modalarında gerekli tüm parçaları kullanabilirim. Şimdiye kadar harika çalışıyor. JVM (JNI_CreateJavaVM döner bir değer < 0) Ben JNI_CreateJavaVM sonra bir istisna eğer benim C++ code.But içinde bir istisna istiyorum başlamazsaJNI_CreateJavaVM: Hata durumunda bir istisna atarsam arabellek taşması

Şimdi, arabellek taşmasına olsun. Eğer istisnayı JNI_CreateJavaVM çağrısı olmadan yükselirsem, beklendiği gibi çalışır.

Sorunun burada ne olabileceği konusunda bir ipucu var mı? Ya da bu nasıl hata ayıklanır?

Çevre: Windows, Visual Studio 2008 JDK: jrockit27.6jdk16005 ancak GÜNEŞ stok biri de

Şerefe bir bir işaretçi veya referans atma gibi

+1

jvm-> DestroyJavaVM(); atmadan önce? –

cevap

2

bana görünüyor Dominik ile olur geçersiz bellek. Bir istisnayı referans olarak atmak iyi bir fikirdir, ancak nesnenin yığının üzerinde olmadığından emin olun. Nesne 'new' kullanılarak ayrıldıysa, bunu düzgün bir şekilde yönetmeniz gerekir (aksi takdirde sızıntı olacak). Benim yaklaşımım, const nesnelerini mümkün olduğunca denemek ve atmaktır.

Bu yardımcı olur mu?