c - 确定缓冲区的总大小(以字节为单位)



我正在学习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( 仍然应该确切地知道当你完成它时要释放多少内存和哪个内存......

相关内容

最新更新