AmbitionBox
Discover Best Places to work in India
Discover best places to work
Compare & find best workplace
Bring your workplace to life
Highlight your company's perks
Read reviews for 6L+ companies
Rate your former or current company
Discover salaries for 8L+ companies
Calculate your take home salary
Check your market value
Help other jobseekers
Read interviews for 90K+ companies
Interviews questions for 1K+ colleges
Contribute your interview questions
C Programming
Which header file should be included to use functions like malloc() and calloc()?
memory.h
stdlib.h
string.h
dos.h
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; }
1314
Garbage value
1316
Random address
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; }
4
2
8
#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); }
0xffff
0xffee
Error
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; }
2, 8
4, 16
8, 24
16, 32
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; }
65536
Allocation failed
No output
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; }
Error: unable to allocate memory
Error: We cannot store address of allocated memory in a
Error: unable to free memory
No error
We should store the address in a[i]
#include#include < stdlib . h >int main() { char *ptr; *ptr = (char)malloc(30); strcpy(ptr, "RAM"); printf("%s", ptr); free(ptr); return0; }
Error: in strcpy() statement.
Error: in *ptr = (char)malloc(30);
Error: in free(ptr);
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; }
memfree(int p);
dealloc(p);
malloc(p, 0);
free(p);
Answer:Option D
Join India’s largest community to research company culture
Are you a student or working professional?
Student/Never worked
I am a student/I have never worked
Working Professional
I am working/I have worked before
What are your preferred job locations?
Popular Cities
Other Cities
Follow your preferred designations/job profiles
Suggestions based on your job profile
vs
Similar Companies