我基本上有这段代码.
char (* text)[1][80];
text = calloc(2821522,80);
Run Code Online (Sandbox Code Playgroud)
我计算它的方式,calloc应该分配215.265045兆字节的RAM,但是,程序最终超过了这个数字并分配了近700mb的内存.
所以看来我无法正确知道该功能将分配多少内存.
如何计算这个属性?
calloc(并且malloc就此而言)可以自由地分配满足请求所需的空间.
所以,不,你不能事先告诉它实际上会给你多少,你只能假设它给你你所要求的金额.
话虽如此,700M看起来有点过分,所以我会调查是否由此calloc承担全部责任,例如,一个只能做到这一点的程序calloc.
您可能还想研究如何测量内存使用情况.
例如,以下程序:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main (void) {
char (* text)[1][80];
struct mallinfo mi;
mi = mallinfo(); printf ("%d\n", mi.uordblks);
text = calloc(2821522,80);
mi = mallinfo(); printf ("%d\n", mi.uordblks);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出,在我的系统上:
66144
225903256
Run Code Online (Sandbox Code Playgroud)
意味着calloc已分配的225,837,112字节只是请求之上的一个smidgeon(115,352字节或0.05%)225,721,760.
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |