संभव डुप्लिकेट:
newbie questions about malloc and sizeofका उपयोग sizeof() malloc'd स्मृति पर
मैं एक कार्यक्रम में तार को पढ़ने के लिए कोशिश कर रहा हूँ। जब मैंने देखा है कि तार कभी कभी भ्रष्ट किया जा रहा था, मैं निम्नलिखित कोड की कोशिश की:
void *mallocated = malloc(100);
printf("sizeof(mallocated) = %d\n", sizeof(mallocated));
मेरे कार्यक्रम के अनुसार, mallocated
के आकार 8
था, भले ही मैं इसके लिए 100 बाइट्स आवंटित। इस वजह से, जब भी मैं 8 बाइट्स से अधिक स्ट्रिंग को स्टोर करने का प्रयास करता हूं, तो 8 वीं बाइट के बाद सब कुछ गायब हो जाएगा। यह क्यों हो रहा है, और मैं इसे कैसे रोक सकता हूं?
sizeof (mallocated) आप शून्य के आकार दे देंगे * जो अपने 64-बिट सिस्टम पर 8 बाइट है। स्ट्रैपी के साथ, उस चर को स्ट्रिंग कैसे आवंटित करते हैं? – tur1ng
देखें: http://stackoverflow.com/questions/1533519/newbie-questions-about-malloc-and-sizeof – Shog9
आपका निष्कर्ष भी गलत है, 8 वें "बाइट" (बिट नहीं) के बाद लिखा गया कुछ भी यादृच्छिक रूप से गायब नहीं होता कभी कभी। – Blindy