完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在一个核中,程序开始会malloc一些空间(在DDR中,申请的空间都是28字节),申请的地址也是逐步向后排的,等到释放的时候发现越到后面的地址释放起来越耗时
前面的地址释放需要几千cycle,后面的地址释放需要几十万cycle,请问这是怎么回事?是寻址的时间长导致的吗?该怎么解决呢,是不是我用错了内存分配函数?还是这种现象无法避免了? |
|
相关推荐
5 个讨论
|
|
我把代码简化了一下,做了一个实验,代码的结构是这样的:多个线程,我在优先级第二大的TSK的开头写了两个for循环
/****连续申请****/ for(i=0;i<400;i++) [ pTest = malloc(28); //申请28字节的空间 uiTestArr = pTest ; pTest = NULL; ] /****连续释放****/ for(i=0;i<400;i++) [ free(uiTestArr,28); ] 我统计出的耗时情况如下: (1)malloc的耗时: 下图的第二列是malloc语句消耗的时间,第三列是申请到的地址 我预期的情况是,申请同样大小的空间,耗时应该是相同的,或者不会相差很多,但从图中可见,有出现几千的情况,这个是什么原因? (2)free的耗时: 情况和malloc的差不多,也是会突然冒出几个大的值 如果是因为优先级抢占造成的,确实会有一个TSK会和它抢,而且频率是1ms一次,但不管是malloc还是free的执行应该都是会保护自己不被打断的才对,不知道真实情况是不是想我猜测的这样。而且我也在malloc和free的上下都加了ti_sy***ios_knl_Task_disable和Task_enable函数,我理解的这两个函数是保护不被抢占的,不知道对不对。 这个问题困扰了我好久,望大牛们多多指教,小妹不胜感激。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
919 浏览 1 评论
531 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
408 浏览 1 评论
962 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2125 浏览 0 评论
54浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
908浏览 2评论
150浏览 2评论
191浏览 2评论
169浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-27 07:30 , Processed in 0.965310 second(s), Total 71, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号