ऐसी परियोजना पर काम करना जो वस्तुओं का निर्माण करने के लिए कारखानों का उपयोग करता है। मैं पॉइंटर्स को विश्व स्तर पर युद्धों में कारखाने के कार्यों में रखता हूं (मुझे पता है) और उन्हें प्रारंभिकरण पर पंजीकृत करें।डेल्फी मेमोरी इश्यू (फास्टएमएम 4)
मुझे हाल ही में यह देखने में दिलचस्पी थी कि प्रोजेक्ट में मेमोरी लीक है तो फास्टएमएम 4 डाउनलोड करने का फैसला करें और देखें। यह कुछ त्रुटियों के साथ आया जो मैं ठीक कर सकता था लेकिन यह मुझे लगता है कि मैं नीचे दिए गए कोड में दिखाए गए कारखाने से संबंधित स्मृति को मुक्त नहीं कर रहा हूं, मुझे एक छोटी सी स्मृति रिसाव मिल रही है। हास्यास्पद लेकिन फिर भी परेशान नहीं है।
मेमोरी को मुक्त करने के लिए मैं क्या उपयोग करूंगा (यदि यह है) मैंने कोशिश की है (@factoryfunction) लेकिन सब कुछ उलझन में लग रहा है। मैं कम स्तर के पॉइंटर सामान के साथ बहुत अच्छा नहीं हूं हमेशा मुझसे बाहर नरक को भ्रमित करता है ताकि कोई मदद कर सके तो यह बहुत अच्छा होगा।
मैंने नीचे एक उदाहरण शामिल किया है कि मैंने अभी अपने सिर के शीर्ष को लिखा है जो मेरी समस्या का वर्णन करता है।
चीयर्स,
बैरी
unit Test;
interface
uses classes;
type
TAFactoryFunction = reference to function (const aType : integer): TObject;
function testfunction (const aType : integer) : TObject;
implementation
function testfunction(const aType: integer) : TObject;
begin
result := TObject.Create;
end;
var
FactoryFunction : TAFactoryFunction
initialization
FactoryFunction := testfunction;
finalization
// possibly some freemem code here?
end.
मैं उत्सुक हूं - आप एक साधारण फ़ंक्शन प्रकार के बजाय "फ़ंक्शन का संदर्भ" क्यों उपयोग कर रहे हैं? यह मेमोरी रिसाव से बच जाएगा क्योंकि इसमें हुप्स के माध्यम से कंपाइलर कूदना शामिल नहीं होगा जिससे कि अधिक आसानी से हासिल किया जा सके। या यह उन मामलों में से एक है जहां सरलीकृत उदाहरण मूल परिदृश्य को पूरी तरह से प्रतिबिंबित नहीं करता है? – Deltics
बस इसके साथ टाइपिंग के रिश्तेदार ढीलेपन की तरह, तो चर प्रक्रियाओं, विधियों या अज्ञात तरीकों को ले सकते हैं। इसका उपयोग ढांचे के लिए किया जा रहा है, इसलिए इसे यथासंभव एक्स्टेंसिबल बनाना चाहते हैं। – Barry
मुझे यकीन नहीं है कि यह प्राप्त करता है, हालांकि, है ना? संदर्भ अभी भी उचित हस्ताक्षर के एक समारोह के लिए होना चाहिए, नहीं? यदि नहीं तो मैं कहूंगा कि इस तरह की चीज से बचने का कारण यह है कि प्लेग !! अगर मैं एक निश्चित हस्ताक्षर के साथ एक समारोह के रूप में एक प्रकार की घोषणा करता हूं तो यह अच्छी तरह से इस तरह इस्तेमाल किया जा सकता है। कुछ और रखरखाव सिरदर्द के लिए पूछ रहा है (भ्रम का उल्लेख नहीं)। और सवाल बनी हुई है, आप इस लचीलेपन को क्यों अनुमति देना चाहते हैं, इसके अलावा आप चाहते हैं कि आप चाहते हैं? लचीलापन आपके ढांचे में क्या उद्देश्य प्रदान करता है? – Deltics