在我的课上,我们有一个作业,其中一个问题是:
C中的内存碎片:设计,实现并运行执行以下操作的C程序:它为3m数组的序列分配内存,每个数组大小为500000个元素; 然后它释放所有偶数数组并分配一系列m个数组,每个数组大小为700000个元素.测量程序分配第一个序列和第二个序列所需的时间.选择m以便耗尽程序可用的所有主内存.解释你的时间
我的实现如下:
#include <iostream>
#include <time.h>
#include <algorithm>
void main(){
clock_t begin1, stop1, begin2, stop2;
double tdif = 0, tdif2 = 0;
for(int k=0;k<1000;k++){
double dif, dif2;
const int m = 50000;
begin1 = clock();
printf("Step One\n");
int *container[3*m];
for(int i=0;i<(3*m);i++)
{
int *tmpAry = (int *)malloc(500000*sizeof(int));
container[i] = tmpAry;
}
stop1 = clock();
printf("Step Two\n");
for(int i=0;i<(3*m);i+=2)
{
free(container[i]);
}
begin2 = clock();
printf("Step Three\n");
int *container2[m];
for(int i=0;i<m;i++)
{
int *tmpAry = (int *)malloc(700000*sizeof(int));
container2[i] = …Run Code Online (Sandbox Code Playgroud)