Question

1.
2.
3.
4.
Answer (Detailed Solution Below)

Option 4 : It is undefined behaviour (use-after-free) / यह अपरिभाषित व्यवहार है (use-after-free)

Advertisement

Detailed Solution

सही उत्तर It is undefined behaviour (use-after-free) / यह अपरिभाषित व्यवहार है (use-after-free) है।

Key Points
Helpful?
PrepSnapprepsnap.in • Part -A

Question:

Which statement about the following C code is TRUE? int *p = (int*)malloc(sizeof(int)); *p = 42; free(p); *p = 7; / निम्नलिखित C कोड के बारे में कौन-सा कथन सत्य है? int *p = (int*)malloc(sizeof(int)); *p = 42; free(p); *p = 7;

1.
The program always crashes with a segmentation fault / प्रोग्राम हमेशा सेग्मेंटेशन फॉल्ट से क्रैश होता है
2.
It is safe because the memory still belongs to the process / यह सुरक्षित है क्योंकि मेमोरी अभी भी प्रोसेस की है
3.
*p is guaranteed to retain the value 42 / *p का मान 42 बने रहने की गारंटी है
4.
It is undefined behaviour (use-after-free) / यह अपरिभाषित व्यवहार है (use-after-free)

Correct Answer: It is undefined behaviour (use-after-free) / यह अपरिभाषित व्यवहार है (use-after-free)

Dereferencing p after free(p) is a use-after-free bug, which is undefined behaviour — it may appear to work, corrupt the heap, or crash depending on the allocator. It is not guaranteed to crash, nor is it safe. / free(p) के बाद p को डीरेफरेंस करना use-after-free बग है, जो अपरिभाषित व्यवहार है — एलोकेटर के आधार पर यह काम करता प्रतीत हो सकता है, हीप भ्रष्ट कर सकता है, या क्रैश हो सकता है। न तो क्रैश की गारंटी है, न ही यह सुरक्षित है।

Downloaded from PrepSnap (prepsnap.in)