小编Cj *_*sen的帖子

故意浪费所有主要内存来学习碎片

在我的课上,我们有一个作业,其中一个问题是:

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)

c memory heap-fragmentation

10
推荐指数
1
解决办法
1107
查看次数

标签 统计

c ×1

heap-fragmentation ×1

memory ×1