我正在学习C并且有这个问题。假设我声明了以下缓冲区:
int n=100, dim=5;
double *buf = calloc(n * dim, sizeof(double));
我如何知道在内存中声明的此缓冲区的总大小(以字节为单位)?我使用以下方式,但我不确定它是否在逻辑上正确:int buf_size_in_byte= (n)* sizeof(double);
答案 0 :(得分:4)
calloc()
的第一个参数是对象的数量,第二个参数是每个对象的大小。总分配大小是这两个值的乘积。在您的情况下是n * dim * sizeof(double)
。
答案 1 :(得分:0)
除非我遗漏了一些东西:
buf本身总是只是sizeof(double *)。
但是你分配的内存量将是n * dim * sizeof(double)。
free(buf)应该确切知道当你完成它时要释放多少和哪些内存...