2.2k views

The most appropriate matching for the following pairs

      X: m = malloc(5); m = NULL;     1: using dangling pointers
Y: free(n); n -> value = 5;      2: using uninitialized pointers
Z: char *p, *p ='a';            3: lost memory

$$\begin{array}{|l|l|} \hline \text{X: m = malloc(5); m = NULL;} & \text{1: using dangling pointers}\\\hline \text{Y: free(n); n -> value = 5; } & \text{2: using uninitialized pointers} \\\hline \text{Z: char *p, *p ='a'; } & \text{3: lost memory} \\\hline \end{array}$$

is:

1. $X - 1 \ \ Y - 3 \ \ Z - 2$
2. $X - 2 \ \ Y - 1 \ \ Z - 3$
3. $X - 3 \ \ Y - 2 \ \ Z - 1$
4. $X - 3 \ \ Y - 1 \ \ Z - 2$
edited ago | 2.2k views

$X: m = NULL$; makes the pointer $m$ point to $NULL$. But the memory created using $malloc$ is still there and but cannot be used as we don't have a link to it. Hence, lost memory

$Y: n$ is freed and so pointer $n$ is now pointing to an invalid memory making it a Dangling pointer.

$Z: p$ is not initialized. $p = malloc(sizeof(char))$; should have been used before assigning '$a$' to $*p$.

edited
0
@Vasudha-Garg
0
nice explanation....
0
pls explain option a ) little bit more
+19
m=malloc(5)  //m is pointing to memory location allocated by malloc function

m=null         //  now m is not pointing to anything, but memory is still allocated and now we dont have a link to access  the memory

therefore memory Lost.
0
well explained
0
Nice
0

0
Case X is also known as Memory Leak

1
2