logo

CuriousTab

CuriousTab

Memory Allocation problems


  • 1. What will be the output of the program?
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char *s;
        char *fun();
        s = fun();
        printf("%s\n", s);
        return 0;
    }
    char *fun()
    {
        char buffer[30];
        strcpy(buffer, "RAM");
        return (buffer);
    }
    

  • Options
  • A. 0xffff
  • B. Garbage value
  • C. 0xffee
  • D. Error
  • Discuss
  • 2. 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;
    }
    

  • Options
  • A. 65536
  • B. Allocation failed
  • C. Error
  • D. No output
  • Discuss
  • 3. What will be the output of the program?
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
        union test
        {
            int i;
            float f;
            char c;
        };
        union test *t;
        t = (union test *)malloc(sizeof(union test));
        t->f = 10.10f;
        printf("%f", t->f);
        return 0;
    }
    

  • Options
  • A. 10
  • B. Garbage value
  • C. 10.100000
  • D. Error
  • Discuss
  • 4. 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);
        return 0;
    }
    

  • Options
  • A. 4
  • B. 2
  • C. 8
  • D. Garbage value
  • Discuss
  • 5. 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);
        return 0;
    }
    

  • Options
  • A. 1314
  • B. Garbage value
  • C. 1316
  • D. Random address
  • Discuss
  • 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;
    }
    

  • Options
  • A. 2, 8
  • B. 4, 16
  • C. 8, 24
  • D. 16, 32
  • Discuss
  • 7. Assume integer is 2 bytes wide. How many bytes will be allocated for 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));
        return 0;
    }
    

  • Options
  • A. 56 bytes
  • B. 128 bytes
  • C. 24 bytes
  • D. 12 bytes
  • Discuss

First