码迷,mamicode.com
首页 > 其他好文 > 详细

用内存占用曲线画正弦波

时间:2016-02-19 22:05:08      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

    今天突然想起原来用cpu使用率曲线画正弦波,于是打算换个思路用内存占用率画正弦波形。

    主要用到malloc函数和free函数来操作内存。

    

    毕竟我不是ACMer所以就中规中矩的写。

    首先实现矩形波。

    首先找找思路,先写函数接口,这是一个很好的编程习惯。

    那么就:

    

int occupy_Mbyte( int size,const int delay_time,const int wait_time)

    size是分配空间大小,单位是M,这个参数可以调整;delay_time是每分配1M的延时,这样可以调整波形的胖瘦,wait_time是每次分配完波形的持续时间,这个参数在正弦波的时候有用,在产生正弦波的时候设置为0就可以了,因为正弦波的变化本身就提供了持续时间。

 然后写主函数调用:

  

int main()
{
    long int i = 0;

    for( i=0;i<20;i++){
        if(i%2 == 0){
            occupy_Mbyte(1024,0,50000);
        }else{
            Sleep(50000);
        }
    }
    return 0;
}

  这样的主函数应该能产生脉宽10s,占空比50%的矩形波。

  接下来就要实现occupy_Mbyte函数了

  
int occupy_Mbyte( int size,const int delay_time,const int wait_time)
{
        long int i = 0;

        for( i=0;i<size * 1024;i++ ){
            p[i] = malloc(1024);

            if(i%1024 == 0){
                Sleep(delay_time);
            }
        }

        Sleep(wait_time);
        for( i=0;i<size * 1024;i++ ){
            free(p[i]);
        }
}

其中p数组是定义为全局数组

int *p[1024 * 1024] = {0};

这个数组每个单元存储malloc分配的一个1024B也就是1K的内存单元的指针,那么整个数组就可以管理1G的内存分配。

我们试着运行一下看看结果。

技术分享

  呵呵,ok!

  下来我们要用一用math头文件里面的三角函数函数了

用内存占用曲线画正弦波

标签:

原文地址:http://www.cnblogs.com/zhangte/p/5202194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!