2013-01-22 12 views
6

मेरे पास एक बाहरी विधि है जो कुछ पैरामीटर प्राप्त करती है, स्मृति आवंटित करती है और एक सूचक देता है।'अप्रबंधित' सूचक को कैसे पिन करें?

[DllImport("some.dll", CallingConvention = CvInvoke.CvCallingConvention)] 
public static extern IntPtr cvCreateHeader(
     Size size, 
     int a, 
     int b); 

मुझे अच्छी तरह पता है कि यह खराब व्यवहार का एक प्रबंधित आवेदन में अप्रबंधित स्मृति को आबंटित करने के लिए है हूँ लेकिन इस मामले में मैं dll के रूप में कोई विकल्प नहीं 3 पार्टी है।

एक बराबर समारोह है कि स्मृति विज्ञप्ति नहीं है और मैं आवंटित सरणी के आकार है क्या जानते हो।

  1. मैं लौटा हुआ सूचक कैसे पिन करूं ताकि जीसी इसे स्थानांतरित न करे (असुरक्षित होने के बिना)? 'निश्चित' ऐसा नहीं करेगा क्योंकि इस सूचक का व्यापक रूप से कक्षा में उपयोग किया जाता है?
  2. क्या इस पी/आमंत्रण के लिए कोई बेहतर तरीका है?
+1

एक अप्रबंधित सूचक क्यों स्थानांतरित होगा (आईओ परिवर्तन पता)? मुझे लगता है कि आपकी समझ गलत है। फिक्सिंग केवल उन्मूलन कोड में प्रबंधित वस्तुओं का उपयोग करते समय आवश्यक है। – leppie

+0

जीसी अपने अनुकूलन (डीफ्रैग) ऑपरेशन में प्रबंधित ऑब्जेक्ट्स (पॉइंटर्स) चलाता है। – Gilad

+1

ठीक है आप प्रबंधित पॉइंटर्स का उपयोग नहीं कर रहे हैं। – leppie

उत्तर

11

नहीं, आप वापस एक सूचक स्मृति है कि होगा कभी नहीं चाल हो रही है। एक देशी ढेर से आवंटित स्मृति रखी जाती है, कचरा कलेक्टर का उपयोग करने वाली कॉम्पैक्टिंग रणनीति के समान कुछ भी नहीं है। यह केवल तब काम कर सकता है जब एक मेमोरी प्रबंधन प्रणाली उन सभी पॉइंटर्स को पा सकती है जो स्मृति के आवंटित खंड को इंगित करती हैं। तो जब यह खंड बदलता है तो यह उन पॉइंटर्स को अपडेट कर सकता है। मूल कोड के लिए ऐसा कुछ भी नहीं है, उन पॉइंटर्स को वापस खोजने का कोई विश्वसनीय तरीका नहीं है।

एक तरह से सूचक पिन करने के लिए की तलाश में परेशान न हों। ऐसा कोई नहीं है क्योंकि किसी की आवश्यकता नहीं है।

+0

हंस, आप हर पांच मिनट या तो "पी-इनवॉक" टैग पेज रीफ्रेश करते हैं, क्या मैं सही हूँ? :) – JerKimball

+2

नहीं, वास्तव में नहीं। एसओ इंजन पूर्व सवालों के आधार पर इन सवालों को मेरे सामने वाले पृष्ठ पर धक्का देता है। मुझे लगता है कि मैं हमेशा के लिए पिनवोक सवालों का जवाब दे रहा हूँ;) –

+1

http://uploads8.wikipaintings.org/images/titian/sisyphus-1549.jpg – JerKimball

संबंधित मुद्दे