Open In App

C | Dynamic Memory Allocation | Question 3

Like Article
Like
Save
Share
Report

Output? 

C




# include<stdio.h>
# include<stdlib.h>
  
void fun(int *a)
{
    a = (int*)malloc(sizeof(int));
}
  
int main()
{
    int *p;
    fun(p);
    *p = 6;
    printf(\"%d",*p);
    return(0);
}


(A)

May not work

(B)

Works and prints 6


Answer: (A)

Explanation:

The program is not valid. Try replacing “int *p;” with “int *p = NULL;” and it will try to dereference a null pointer. This is because fun() makes a copy of the pointer, so when malloc() is called, it is setting the copied pointer to the memory location, not p. p is pointing to random memory before and after the call to fun(), and when you dereference it, it will crash. If you want to add memory to a pointer from a function, you need to pass the address of the pointer (ie. double pointer).


Quiz of this Question
Please comment below if you find anything wrong in the above post


Last Updated : 09 Feb, 2013
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads