मैंने निम्न कोड के परिणाम में कुछ अंतर देखा है:
#include & lt ; stdio.h & gt; # शामिल करें & lt; malloc.h & gt; #include & lt; string.h & gt; Int मुख्य (शून्य) {चार * ptr; पीटीआर = (चार *) मॉलोक (आकारफ (चार) * 12); स्ट्रक्पी (पीटीआर, "हैलो वर्ल्ड"); Printf ("% s \ n", पीटीआर); Printf ("मुफ़्त? \ N"); नि: शुल्क (PTR); Printf ("% s \ n", पीटीआर); } मुझे समझाइए:
ओएस के आधार पर प्रिंट करने के लिए तीसरे कॉल में मुझे विंडोज़ के अलग-अलग परिणाम मिलते हैं, लिनक्स में गारबेज कार्क्टर और एक यूनिक्स सिस्टम में "हैलो वर्ल्ड" छपा हुआ है।
क्या स्मृति को मुक्त करने के लिए संकेतक की स्थिति की जांच करने का कोई तरीका है?
मुझे लगता है कि प्रिंट के इस तंत्र को हर बार भरोसा नहीं किया जा सकता।
थ्नकस।
ग्रीटिंग्स
अपरिभाषित व्यवहार में परिणामों को मुक्त करने के बाद एक संकेतक का उपयोग करना।
यह इसका मतलब है कि कार्यक्रम कचरा को प्रिंट कर सकता है, स्ट्रिंग की पूर्व सामग्रियों को प्रिंट कर सकता है, अपनी हार्ड ड्राइव को मिटा सकता है या बंदरों को अपने नीचे से उड़ने में सक्षम बनाता है, और अभी भी सी मानक के अनुपालन में है।
एक सूचक को देखो और "जब स्मृति को मुक्त किया गया है" ट्रैक रखने के लिए एक प्रोग्रामर के रूप में आप पर निर्भर है।
Comments
Post a Comment