In the following code,what is the meaning of buf = malloc(n * sizeof(char));
is n*sizeof(char) necessary,if yes.. please elaborate.
int n;
char* buf;
fstat(fd, &fs);
n = fs.st_size;
buf = malloc(n * sizeof(char));
EDIT1 And What if I write (n*sizeof(double))
The
mallocfunction allocates bytes and takes as input the number of bytes you would like to allocate. Thesizeofoperator returns the number of bytes for a given type. In this case acharis 1 byte, but in the case of anintit is most likely 4 bytes ordoubleis most likely 8 bytes. The expressionn * sizeof(char)converts the number ofcharinto the number of bytes that are desired.In the case illustrated, using
char, computing the number of bytes is probably not needed, but it should be done as it helps to convey your intent.What the expression is doing is allocating the desired amount of memory needed to hold at most
nnumber ofchar‘s and returning you a pointer,buf, to the beginning of that allocated memory.