हमारे पास सी ++ में पॉइंटर्स की अवधारणा है। अब अगर हम सी ++ में कुछ मेमोरी आवंटित करते हैं और जावा पर ऑब्जेक्ट रेफरेंस (जेएनआई का उपयोग करके) को पास करते हैं तो कौन होना चाहिए और कौन इसे मुक्त कर देगा।जेएनआई, कचरा संग्रह और पॉइंटर्स- जावा/सी ++ जो क्या करना चाहिए?
यह
1. होगा) कचरा कलेक्टर जावा में यह स्वचालित रूप से करता है?
2.) हमें लिपटे जेएनआई कक्षा को अंतिम रूप देने के लिए सूचक पर स्पष्ट रूप से हटाना होगा?
3.) या हम सिर्फ भूल जाते हैं तो अंतिम रूप देने के (के रूप में finalizers भरोसा नहीं किया जा सकता है) और यह जावा की जिम्मेदारी है एक सी ++ कोड जो वस्तु
4.) को हटा देता है या वहां किसी तरह पुनःआवंटन है कॉल करने के लिए सीधे जावा में मेमोरी (सुनिश्चित नहीं है कि जावा इसे हटाने के लिए सी ++ पॉइंटर इनऑर्डर को कैसे छेड़छाड़ करता है)?
ऐसा करने के लिए सबसे अच्छा अभ्यास क्या है और इसके विपरीत (जब हम जावा से सी ++ ऑब्जेक्ट पास करते हैं)?
+1 निश्चित रूप से आवंटक रिलीज करने वाला एक होना चाहिए, और जावा-साइड आवंटित करना (यदि संभव हो) "क्लीनर" है। – Viruzzo
मैं अपने क्लीनर से सहमत हूं, esp अगर जावा सी ++ को अन्य तरीकों से बजाए। –
बिंदु संख्या 2 के लिए, जावा में रिलीज विधि C++ विधि को कॉल करेगी जो वास्तव में ऑब्जेक्ट को हटा देगी? जावा सीधे सी ++ में आवंटित स्मृति को कैसे जारी कर सकता है? – seahorse