BUG层出不穷 2022-01-10 10:43 采纳率: 50%
浏览 48
已结题

malloc一次的时间比循环malloc的时间长5倍以上

1.问题遇到的现象和发生背景

//想测试一下malloc的时间,发现malloc相同大小的前提下,malloc一次的时间比循环进行malloc的时间更长
######2. 问题相关代码,请勿粘贴截图
//单次malloc

 double t11,t22,t33;
gettimeofday(&tv,NULL);
t11 = tv.tv_sec*1000*1000 + tv.tv_usec;
t1->alloc(200000);//对malloc进行的封装
t1->dispose();//free的封装
gettimeofday(&tv,NULL);
t22 = tv.tv_sec*1000*1000 + tv.tv_usec;
t33=t22-t11;
printf("time:%f-----(us)\n",t33);

循环alloc就是把这段代码放在循环中
######.3. 运行结果及报错内容
time:224.000000-----(us)//单次运行时间

time:173.000000-----(us)//循环,第一次分配
time:14.000000-----(us)//第二次及以后的时间都在14us左右
######为什么呢?

  • 写回答

2条回答 默认 最新

  • churuxu 2022-01-10 11:12
    关注

    malloc实现原理大概是先从系统中分配一大段内存,再从一大段内存中分配一小段内存,如果已有就直接分配一小段内存

    所以多次分配时后面几次分配都会比较快

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000