假设我有以下程序-从命令行获取一个数字(例如10M),创建此大小的数组,用随机整数填充该数组,徘徊15秒钟,然后退出。应该占用多少内存?(输入10M)
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv)
{
printf("running\n");
long long size = atoi(argv[1]);
printf("%lld\n", size);
int *myArray = malloc(size * sizeof *myArray);
printf("allocated array\n");
srand(time(NULL));
for (long long i=0;i<size;i++) {
if (i == 0) {
printf("first iteration\n");
}
int r = rand();
myArray[i] = r;
}
printf("Allocated\n");
sleep(15);
printf("Done\n");
}
给定输入
./a.out 10000000
这(在Mac Activity Monitor中)占用38.4M。
我的问题是:给定这些参数,是否可以预测简单C应用程序的RAM使用情况?即10M整数的数组。
您的系统上似乎有32位(4字节)整数。
1000万个整数需要1000万* 4 = 4000万个字节。
4000万字节= 40000000/1024/1024 = 38.15MB,这与您所看到的接近。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句