Find Output Of Program

Question 6 :

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 4

int main()
{
    int (*p)[MAXCOL];
    p = (int (*) [MAXCOL]) malloc( MAXROW *sizeof (*p));
    printf("%d, %d\n", sizeof(p), sizeof(*p));
    return 0;
}


A). 2, 8
B). 4, 16
C). 8, 24
D). 16, 32
Answer : Option A

Question 7 :

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");
    return 0;
}


A). 65536
B). Allocation failed
C). Error
D). No output
Answer : 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.