Skip to content
Related Articles

Related Articles

C | Dynamic Memory Allocation | Question 3

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 09 Feb, 2013


# include<stdio.h>
# include<stdlib.h>
void fun(int *a)
    a = (int*)malloc(sizeof(int));
int main()
    int *p;
    *p = 6;

(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).

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!