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

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日

悬赏问题

  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 这个公式写进SIMULINK中的function模块的代码中应该是什么样的
  • ¥15 javaweb登陆的网页为什么不能正确连接查询数据库
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程
  • ¥15 layui数据表格多次重载的数据覆盖问题
  • ¥15 python点云生成mesh精度不够怎么办
  • ¥15 QT C++ 鼠标键盘通信