2009-02-02 17 views
5

विंडोज हीपफ्री, msvcrt मुफ्त: क्या वे स्मृति को पग-इन करने के लिए मुक्त कर देते हैं? मैं यह अनुमान लगाने की कोशिश कर रहा हूं कि बाहर निकलने पर स्मृति मुक्त नहीं होने पर एप्लिकेशन शटडाउन में तेजी आएगी।क्या स्मृति विलोपन दिनचर्या ब्लॉक को मुक्त किया जा रहा है?

नोट: यह एक बहुत ही विशिष्ट तकनीकी प्रश्न है। यह इस बात के बारे में नहीं है कि अनुप्रयोगों को बाहर निकलने पर free पर कॉल करना चाहिए या नहीं।

+0

बहुत ही रोचक सवाल। मुझे उम्मीद है कि कोई इसका जवाब दे सकता है। बीटीडब्ल्यू, क्या आपने एमएसडीएन मंचों में पूछने की कोशिश की है? –

+0

मुझे लगता है कि आपको संपादन को उत्तर के रूप में पोस्ट करना चाहिए था। अच्छा कार्य! –

उत्तर

1

मैंने HeapFree के लिए एक परीक्षण चलाया। निम्नलिखित कार्यक्रम मैं पर HeapFree अंदर पहुँच उल्लंघन है = 31,999:

#include <windows.h> 

int main() { 

    HANDLE heap = GetProcessHeap(); 
    void * bufs[64000]; 

    // populate heap 
    for (unsigned i = 0; i < _countof(bufs); ++i) { 
     bufs[i] = HeapAlloc(heap, 0, 4000); 
    } 

    // protect a block in the "middle" 
    DWORD dwOldProtect; 
    VirtualProtect(
     bufs[_countof(bufs)/2], 4000, PAGE_NOACCESS, 
     &dwOldProtect); 

    // free blocks 
    for (unsigned i = 0; i < _countof(bufs); ++i) { 
     HeapFree(heap, 0, bufs[i]); 
    } 
} 

ढेर

[email protected]() + 0x12b9 bytes 
[email protected]() + 0x91f bytes 
shutfree.exe!main() Line 19 C++ 

तो ऐसा लगता है कि इस सवाल का जवाब की तरह है "हाँ" (इस free पर भी लागू होती है, यह बाद से है HeapFree आंतरिक रूप से उपयोग करता है)

0

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

यदि आप इसे व्यवस्थित कर सकते हैं, तो आप अपने आवेदन को स्थापित करने का प्रयास कर सकते हैं जैसे कि अगर यह जानता है कि यह छोड़ने जा रहा है, तो लंबित कार्य (कॉन्फ़िगरेशन, दस्तावेज़, जो कुछ भी) सहेजें और अनजाने से बाहर निकलें।

+0

निश्चित रूप से, कुछ फ़ंक्शन को कॉल करने से इसे कॉल करने से तेज़ नहीं है :) लेकिन सवाल इस बारे में नहीं था, लेकिन मैप मैनेजर विनिर्देशों के बारे में नहीं था। शट डाउन को तेज करना सिर्फ संदर्भ है। – Constantin

4

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

+0

सबसे पहले, मैंने किसी यूआई का उल्लेख नहीं किया। सवाल सामान्य है। दूसरा, पृष्ठ दोष पूरे सिस्टम को प्रभावित करते हैं, न केवल उन अनुप्रयोगों के कारण जो उन्हें उत्पन्न करते हैं। तो कथित तस्वीर यह होगी कि एप्लिकेशन स्क्रीन से गायब हो जाता है और फिर ओएसडी पीसने लगती है जबकि ओएस अनावश्यक पेज दोषों को हल करता है। – Constantin

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

  • कोई संबंधित समस्या नहीं^_^