【发布时间】:2017-06-16 01:13:41
【问题描述】:
我正在学习 C 并且有这个问题。假设我声明了以下缓冲区:
int n=100, dim=5;
double *buf = calloc(n * dim, sizeof(double));
我如何知道在内存中声明的这个缓冲区的总大小(以字节为单位)?我使用以下方式,但我不确定它是否在逻辑上正确:int buf_size_in_byte= (n)* sizeof(double);
【问题讨论】:
-
buf_size_in_byte应该是size_t,它是:size_t buf_size_in_byte = sizeof(double) * n * dim;,或者更好:size_t buf_size_in_byte = sizeof *buf * n * dim; -
@DavidBowling 非常感谢
-
想法:使用
buf = calloc(n * dim, sizeof *buf);,则无需知道buf指向calloc()调用的类型。更容易编写、审查和更新。
标签: c pointers memory memory-management sizeof