C Programming Questions and Answers
Which header file should be included to use functions like malloc() and calloc()?
Option B
What will be the output of the program?
#include < stdio . h >#include < stdlib . h >int main()
{
int *p;
p = (int *) malloc (20); /* Assume p has address of 1314 */free(p);
printf("%u", p);
return0;
}
Option A
What will be the output of the program (16-bit platform)?
#include < stdio . h >#include < stdlib . h >int main()
{
int *p;
p = (int *) malloc (20);
printf("%d\n", sizeof (p));
free(p);
return0;
}
Option B
What will be the output of the program?
#include < stdio . h >#includeint main()
{
char *s;
char *fun();
s = fun();
printf("%s\n", s);
return0;
}
char *fun()
{
char buffer[30];
strcpy(buffer, "RAM");
return (buffer);
}
Option B
Explanation :The output is unpredictable since buffer is an auto array and will die when the control go back to main. Thus s will be pointing to an array , which not exists.
Assume integer is 2 bytes wide. What will be the output of the following code?
#include < stdio . h >#include < stdlib . h >#define MAXROW 3#define MAXCOL 4int main()
{
int (*p)[MAXCOL];
p = (int (*) [MAXCOL]) malloc( MAXROW *sizeof (*p));
printf("%d, %d\n", sizeof(p), sizeof(*p));
return0;
}
Option A
How many bytes of memory will the following code reserve?
#include < stdio . h >#include < stdlib . h >int main()
{
int *p;
p = (int *)malloc(256 * 256);
if(p == NULL)
printf("Allocation failed");
return0;
}
Option B
Explanation :Hence 256*256 = 65536 is passed to malloc() function which can allocate upto 65535. So the memory allocation will be failed in 16 bit platform (Turbo C in DOS).
If you compile the same program in 32 bit platform like Linux (GCC Compiler) it may allocate the required memory.
Point out the error in the following program.
#include#include < stdlib . h >int main()
{
int *a[3];
a = (int*) malloc ( sizeof (int) *3);
free(a);
return0;
}
Option B
Explanation :We should store the address in a[i]
Point out the error in the following program.
#include#include < stdlib . h >int main()
{
char *ptr;
*ptr = (char)malloc(30);
strcpy(ptr, "RAM");
printf("%s", ptr);
free(ptr);
return0;
}
Option B
Explanation :ptr = (char*)malloc(30);
How will you free the memory allocated by the following program?
#include#include#define MAXROW 3#define MAXCOL 4int main()
{
int **p, i, j;
p = (int **) malloc(MAXROW * sizeof(int*));
return0;
}
Answer:Option D