c使用malloc分配内存

pol*_*nux 0 c malloc

我有这些变种:

uint32_t fsize;
char *filebuffer = NULL;
fsize = fileStat.st_size;
Run Code Online (Sandbox Code Playgroud)

如果我想要malloc正确的内存我必须编写的代码是这样的:

malloc(fsize);
Run Code Online (Sandbox Code Playgroud)

或这个:

malloc(fsize * sizeof(char *));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gra*_*and 5

sizeof(char*)指针的大小,可能不是你想要的.按照名称,我假设这fsize是一个文件的大小(以字节为单位),所以很简单

malloc(fsize);
Run Code Online (Sandbox Code Playgroud)

很好.

malloc()分配指定的字节数.如果你打电话给malloc(fsize * sizeof(char *))你要分配太多的内存,因为你需要fsize一个额外的因子乘以所需的字节数()sizeof(char*),这是存储指针所需的字节数(通常为4或8字节) .

char*在决定分配多少字节时,最终将分配的内存分配给指针这一事实无关紧要.