malloc 0'ed स्मृति वापस जाने के लिए गारंटी नहीं है। पारंपरिक ज्ञान न केवल कि है, लेकिन स्मृति की सामग्री को malloc रिटर्न वास्तव में non-deterministic, उदा हैं कि openssl used them for extra randomness।मॉलोक वास्तव में गैर-निर्धारक क्यों है? (लिनक्स/यूनिक्स)
हालांकि, जहां तक मुझे पता है, mallocbrk/sbrk के शीर्ष है, जो "वापसी" कर पर 0'ed स्मृति बनाया गया है। मैं देख सकता हूँ क्यों क्या malloc की सामग्री रिटर्न हो सकता है गैर 0, उदा पहले से मुफ्त 'डी स्मृति से, लेकिन वे "सामान्य" सिंगल-थ्रेडेड सॉफ़्टवेयर में non-deterministic क्यों होंगे?
- पारंपरिक ज्ञान वास्तव में सच
- (समान द्विआधारी और पुस्तकालयों कल्पना करते हुए) है यदि हां, तो क्यों?
संपादित कई लोगों ने क्यों स्मृति गैर 0, जो मैं पहले से ही ऊपर सवाल में विस्तार से बताया जा सकता है समझाने जवाब दे दिया। मैं जो पूछ रहा हूं वह यह है कि क्यों मॉलोक रिटर्न की सामग्री का उपयोग करने वाला कार्यक्रम गैर-निर्धारिती हो सकता है, यानी हर बार जब यह चल रहा हो तो यह अलग व्यवहार हो सकता है (उसी बाइनरी और पुस्तकालयों को मानते हुए)। गैर-निर्धारक व्यवहार गैर-0 के द्वारा निहित नहीं है। इसे अलग-अलग रखने के लिए: बाइनरी चलाने पर हर बार अलग-अलग सामग्री क्यों हो सकती है।
यदि आप देखते हैं कि यह कभी-कभी गैर-शून्य क्यों हो सकता है, तो आपको पहले ही समझना होगा कि रिटर्न सामान्य रूप से गैर-निर्धारक क्यों है। किसी भी विशिष्ट मामले में यह हमेशा शून्य की स्मृति लौटा रहा प्रतीत होता है, लेकिन सामान्य अर्थ में इसकी गारंटी नहीं दी जा सकती है। – Chad
प्रश्न से संबंधित लिंक कैसा है? –
आप यह भी कह सकते हैं कि सी का उपयोग सामान्य एकल थ्रेडेड सॉफ़्टवेयर के लिए नहीं किया जाता है ... – Mehrdad