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