type
TSomeRecord = Record
field1: integer;
field2: string;
field3: boolean;
End;
var
SomeRecord: TSomeRecord;
SomeRecAr: array of TSomeRecord;
यह है कि मैं क्या है का सबसे बुनियादी उदाहरण है और के बाद से मैं पुन: उपयोग करने SomeRecord
चाहते हैं (कुछ फ़ील्ड रिक्त शेष है, सब कुछ कुछ क्षेत्रों पर किया जाएगा मुक्त कराने के बिना साथ जब मैं SomeRecord
पुन: उपयोग कर रहा हूँ, जो स्पष्ट रूप से अवांछित है) मैं एक ही समय में सभी क्षेत्रों को मुक्त करने का एक तरीका ढूंढ रहा हूं। मैं string[255]
के साथ बाहर शुरू कर दिया और ZeroMemory()
है, जो ठीक था जब तक यह स्मृति लीक शुरू कर दिया करते थे, कि क्योंकि मैं string
में स्विच करने लगा पाया। मुझे अभी भी ज्ञान प्राप्त करने के लिए ज्ञान की कमी है, लेकिन ऐसा लगता है कि यह गतिशील है। मैं गतिशील सरणियों उपयोग कर रहा हूँ के रूप में अच्छी तरह से है, इसलिए मुझे लगता है कि कुछ भी गतिशील पर ZeroMemory()
कोशिश कर लीक में परिणाम होगा। एक दिन बर्बाद कर बर्बाद कर दिया। मुझे लगता है मैं SomeRecord
या SomeRecAr
पर Finalize()
का उपयोग कर ZeroMemory()
से पहले द्वारा इस हल लगता है, लेकिन मुझे यकीन है कि अगर यह उचित दृष्टिकोण है या बस मुझे बेवकूफ नहीं किया जा रहा हूँ।कैसे ठीक से मुक्त रिकॉर्ड है कि एक बार में डेल्फी में विभिन्न प्रकार को रोकने के लिए?
तो सवाल यह है: कैसे सब कुछ एक ही बार में खाली करने के लिए? क्या इसके लिए कुछ एकल प्रक्रिया मौजूद है जो मुझे पता नहीं है?
एक अलग नोट पर, वैकल्पिक रूप से मैं सुझावों के लिए खुला होगा कि इन रिकॉर्ड्स को अलग-अलग तरीके से कैसे कार्यान्वित किया जाए, इसलिए मुझे सामान मुक्त करने के जटिल प्रयास करने की आवश्यकता नहीं है। मैं New()
साथ रिकॉर्ड बनाने और उसके बाद हो रही यह Dispose()
से छुटकारा देखा है, लेकिन मैं पता नहीं इसका क्या मतलब जब Dispose()
के लिए एक कॉल के बाद एक चर, अपरिभाषित है शून्य के बजाय है। इसके अलावा, मुझे नहीं पता कि एक निश्चित प्रकार (SomeRecord: TSomeRecord
) के एक चर के बीच अंतर क्या है जो एक प्रकार (SomeRecord: ^TSomeRecord
) पर इंगित एक चर बनाम है। मैं इस समय उपरोक्त मुद्दों को देख रहा हूं, जब तक कोई इसे जल्दी से समझा नहीं सकता है, इसमें कुछ समय लग सकता है।
@NGLN मुझे एहसास है कि इस उत्तर का सार मूल रूप से लिखा गया है। मुझे लगता है कि यह एक उत्कृष्ट जवाब था। मेरे दिमाग में यह शर्म की बात है कि आपने इसे हटा दिया। यदि आपने ऐसा उत्तर बहाल किया है तो मैं इसे हटा दूंगा और आपका वोट दूंगा। लेकिन मुझे लगता है कि इस सवाल के साथ इन सवालों के जवाब होना चाहिए। मैं चाहता था कि आप पहले थे क्योंकि आप पहले थे। –
सहमत हुए। कोई कठोर भावना नहीं, मैं अब अपना रखूंगा। – NGLN
@NGLN ठीक समझने के लिए धन्यवाद और मैंने अपना डाउनवोट हटा दिया है, जो कठोर था। –