在malloc怀疑.C(Linux)

Pav*_*tar 3 c malloc buffer posix

在下面的代码中,含义是什么 buf = malloc(n * sizeof(char));

n*sizeof(char)必要的,如果是的话......请详细说明.

int n;

char* buf;

fstat(fd, &fs);

n = fs.st_size;

buf = malloc(n * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

EDIT1如果我写怎么办(n*sizeof(double))

lin*_*r27 6

malloc函数分配字节并将您想要分配的字节数作为输入.的sizeof运算符返回对于给定类型的字节数.在这种情况下,a char是1个字节,但在它的情况下,int它很可能是4个字节或者double很可能是8个字节.表达式n * sizeof(char)将数量转换char为所需的字节数.

在图示的情况下,char可能不需要使用,计算字节数,应该这样做,因为它有助于传达您的意图.

表达式正在做的是分配所需的内存量,以保存最多n数量的内存,char并将指针返回buf到分配的内存的开头.

  • ...并且编译器将乘法优化1. (2认同)