2015-07-15 5 views
5

एक प्रकार का सूचक आवंटित करना ठीक है और इसे एक अलग प्रकार के रूप में अलग-अलग आकार के रूप में निपटाना ठीक है? मेरा मतलब यह है:एक प्रकार का सूचक आवंटित करना ठीक है और इसे एक अलग प्रकार के रूप में अलग-अलग आकार के रूप में निपटाना ठीक है?

procedure TForm1.Button1Click(Sender: TObject); 
var A:PInt64; // 64bit 
    P:Pointer; 
    B:PDouble; // 64bit 
begin 
    New(A); 
    P:=A; 
    B:=P; 
    Dispose(B); 
end; 

मान लें कि मैं इसे केवल 8, 16, 32, 64 बिट हस्ताक्षरित और हस्ताक्षरित प्रकारों के लिए चाहता हूं। यह ठीक है ?

+2

अनजान कोड लिखने के तरीके में एक ऑब्जेक्ट सबक! – MartynA

+1

कोई फर्क नहीं पड़ता कि यह रखरखाव योग्य है या नहीं, मैं केवल यह जानना चाहता हूं कि यह काम कर रहा है, अगर इसे आवंटित किया गया है और उसी स्मृति स्थान का निपटारा किया गया है ... मुझे वास्तव में ऐसा करने की आवश्यकता है। –

+0

ठीक है, लेकिन जब आप 18 महीने के समय में मेमोरी लीक खोजते हैं ... – MartynA

उत्तर

6

यदि टाइप किया जा रहा प्रकार एक प्रबंधित प्रकार नहीं है तो यह सुरक्षित है। आपके मामले में, न तो Int64 और न ही Double प्रबंधित प्रकार हैं और इसलिए यह सुरक्षित है।

एक प्रबंधित प्रकार का एक उदाहरण एक स्ट्रिंग, इंटरफ़ेस, संस्करण, अनाम प्रक्रिया/विधि, कामयाब प्रकार युक्त एक रिकार्ड, आदि

होगा जब आप किसी प्रबंधित प्रकार पर New और Dispose उपयोग करते हैं, वस्तु चाहिए आरंभ और अंतिम रूप दिया जाना चाहिए। जब आप किसी अप्रबंधित प्रकार पर New और Dispose का उपयोग करते हैं, तो यह GetMem और FreeMem पर कॉल करने के बराबर है।

वास्तव में, आपको एक ही आकार के रूप में इंगित किए जाने वाले प्रकारों की आवश्यकता नहीं है। जब FreeMem पर कॉल किया जाता है, तो प्रकार का आकार पास नहीं होता है। प्रत्येक ब्लॉक के लिए मेटाडेटा की ओर इशारा किया गया है जो इसे पूरे ब्लॉक को हटाने की अनुमति देता है।

+0

हां, मैं असंगत प्रकारों को रेफर कर रहा था। मुझे नहीं पता था कि उन्हें ऐसा कहा जाता है। AnsiChar और WideChar प्रबंधित कर रहे हैं? –

+1

नहीं, वे अप्रबंधित हैं। –

+0

@ "आपका आखिरी वाक्यांश" - तो हो सकता है कि इस तरह से मुझे स्मृति रिसाव रिपोर्ट प्राप्त नहीं होती है अगर मैं 'ReportMemoryLeaksOnShutdown: = True' सेट करता हूं और एक पीडीटीई आवंटित करता हूं और इसे पीबीटीई के रूप में निपटता हूं ... –

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

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