我有这些变种:
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)
谢谢!
sizeof(char*)指针的大小,可能不是你想要的.按照名称,我假设这fsize是一个文件的大小(以字节为单位),所以很简单
malloc(fsize);
Run Code Online (Sandbox Code Playgroud)
很好.
malloc()分配指定的字节数.如果你打电话给malloc(fsize * sizeof(char *))你要分配太多的内存,因为你需要fsize一个额外的因子乘以所需的字节数()sizeof(char*),这是存储指针所需的字节数(通常为4或8字节) .
char*在决定分配多少字节时,最终将分配的内存分配给指针这一事实无关紧要.
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |