पर रिटर्न पैचर आवंटित करना होगा मेरे पास एक डीएलएल है जिसमें मेरे पास एक फ़ंक्शन है जो एक पचर देता है। मैं मूल रूप से क्या कर रही एक pchar के रूप में एक स्ट्रिंग कास्टिंग किया गया था और लौटने किमेरे डीएलएल में डेल्फी में मुझे एक फ़ंक्शन
Result := pChar(SomeFuncThatReturnsString)
लेकिन मैं उम्मीद मिल रही थी, परिणाम समय के 90% और अन्य समय मैं वापस मिलेगा था (borlndmm उपयोग करने के लिए होने से बचाने के रूप में) कुछ भी तो नहीं।
मुझे तब यह सोचने लगा कि मुझे पचर के लिए स्मृति आवंटित करने की आवश्यकता है और यह करने के लिए मुझे अपना मूल तरीका स्मृति में एक पचर पॉइंट था जो हमेशा मूल रूप से कहा जाता था जब वहां होता था। इसलिए मैं अब इस
Result := StrAlloc(128);
Strcopy(Result,PAnsiChar(Hash(Hash(Code,1,128),2,128)));
है लेकिन यह मुझे कार्यक्रमों अंत जो मैं
StrDispose(Pstr);
के साथ क्या पर आबंटित स्मृति को साफ करने के होने के साथ छोड़ देता है तो $ 64 सवाल है: मैं आवंटित करने के लिए है एक डीएलएल के अंदर एक समारोह से एक पीसीहर लौटने पर स्मृति या क्या मैं इसे एक पीसीहर में डाल सकता हूं?
शट डाउन फ़ंक्शन का खुलासा करना इतना है कि विंडोज 3.1 बस डेलमेन में सभी क्लीनअप का करें जब fdwReason = DLL_PROCESS_DETACH –
मेरे उत्तर के साथ इसका क्या संबंध है?इसके अलावा, DllMain() में क्लीनअप हमेशा संभव नहीं होता है, कुछ ऐसे ऑपरेशन होते हैं जिन्हें सुरक्षित रूप से DllMain() के अंदर सुरक्षित रूप से निष्पादित नहीं किया जा सकता है। –
"लाइब्रेरी अनलोड होने से पहले WEP (विंडोज निकास प्रक्रिया) कॉलबैक फ़ंक्शन गतिशील-लिंक लाइब्रेरी (डीएलएल) के लिए क्लीनअप करता है।" क्या आपने यह सुझाव दिया है? पुन: असुरक्षित संचालन - उदाहरण देने के लिए देखभाल? –