以字节

时间:2017-06-16 01:13:42

标签: c pointers memory memory-management sizeof

我正在学习C并且有这个问题。假设我声明了以下缓冲区:

int n=100, dim=5;
double *buf = calloc(n * dim, sizeof(double));

我如何知道在内存中声明的此缓冲区的总大小(以字节为单位)?我使用以下方式,但我不确定它是否在逻辑上正确:int buf_size_in_byte= (n)* sizeof(double);

2 个答案:

答案 0 :(得分:4)

calloc()的第一个参数是对象的数量,第二个参数是每个对象的大小。总分配大小是这两个值的乘积。在您的情况下是n * dim * sizeof(double)

答案 1 :(得分:0)

除非我遗漏了一些东西:

buf本身总是只是sizeof(double *)。

但是你分配的内存量将是n * dim * sizeof(double)。

free(buf)应该确切知道当你完成它时要释放多少和哪些内存...