2012-08-31 10 views
14
void log(){ 
    time_t current = time(0); 
    tm *ptm = localtime(&current); 
     stuf... 
} 

बस यह सुनिश्चित करना चाहते हैं - क्या मुझे विधि के अंत में टीएम पॉइंटर आवंटित स्मृति जारी करने की आवश्यकता है?क्या स्थानीय समय के लिए स्मृति को हटा दिया जाना चाहिए?

+0

संभावित डुप्लिकेट [सी में आवंटित स्थानीयकरण की परिणाम संरचना कैसे है?] (Http://stackoverflow.com/questions/8694365/how-is-the-result-struct-of-localtime-allocated-in- सी) – user

+0

यह भी देखें [प्रोजेक्ट प्रोफाइल करते समय डाइल्ड और लोकटाइम लीक को कैसे हल करें?] (http://stackoverflow.com/q/10105181) – jww

उत्तर

20

नहीं, आपको इसे अस्वीकार नहीं करना चाहिए, संरचना स्थाई रूप से आवंटित की गई है।

चेक documentation: एक स्थिर आंतरिक std::tm वस्तु सफलता पर, या NULL अन्यथा करने के लिए

वापसी मान
सूचक। संरचना को std::gmtime, std::localtime, और std::ctime के बीच साझा किया जा सकता है, और प्रत्येक आमंत्रण पर ओवरराइट किया जा सकता है।

+0

स्थिर रूप से आवंटित करके आपका क्या मतलब है? इसे लोकलटाइम कार्यान्वयन द्वारा ढेर पर आवंटित किया गया है? –

+0

@ user1495181: आपके लिए संदर्भ जोड़ा गया। –

+1

एस/नहीं होना चाहिए/नहीं होना चाहिए/ –

5

नहीं, आपको नहीं करना चाहिए। यह संरचना स्थिर रूप से आवंटित और कार्यों gmtime और localtime द्वारा साझा की जाती है। प्रत्येक बार या तो इन कार्यों में से एक को इस संरचना की सामग्री कहा जाता है जिसे अधिलेखित किया जाता है।

तो परिणामों से सावधान रहें - उदा। उन्हें तुरंत कॉपी करें और सूचक को स्टोर न करें।

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

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