Top

Discussion

If malloc() successfully allocates memory it returns the number of bytes it has allocated.

# include
#include
void fun(int *a)
{
    a = (int*)malloc(sizeof(int));
}
int main()
{
    int *p;
    fun(p);
    *p = 6;
    printf("%dn",*p);
    return(0);
}

 

  • A.May not work
  • B.Works and prints 6
  • C.Compiler Error
  • D.Runtime error

Answer: A

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

No comment is present. Be the first to comment.
Loading…

Post your comment