Q. 27 Consider the following C code:
#include <stdio.h> int * assignval (int *x, int val) { *x = val; return x; } int main() { int *x = malloc(sizeof(int)); if (NULL == x) return; x = assignval(x, 0); if(x) { x = (int*) malloc(sizeof (int)); if (NULL == x) return; x = assignval (x, 10); } printf("%d\n", *x); free(x); }
The code suffers from which one of the following problems:
(A) compiler error as the return of malloc is not typecast appropriately.
(B) compiler error because the comparison should be made as x==NULL and not as shown.
(C) compiles successfully but execution may result in dangling pointer.
(D) compiles successfully but execution may result in memory leak.
Answer: (D)
Explanation: