The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+20 votes
1.1k 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

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$
asked in Programming by Veteran (68.9k points)
edited ago by | 1.1k views

1 Answer

+38 votes
Best answer

ans: (D)

$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$.

answered by Boss (5.1k points)
edited ago by
@Vasudha-Garg
nice explanation....
pls explain option a ) little bit more
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.


Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

32,693 questions
39,293 answers
110,109 comments
36,701 users