完善资料让更多小伙伴认识你,还能领取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函数,我理解的这两个函数是保护不被抢占的,不知道对不对。 这个问题困扰了我好久,望大牛们多多指教,小妹不胜感激。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
574 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1024 浏览 1 评论
669 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
499 浏览 1 评论
1020 浏览 0 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
125浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
99浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
107浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
105浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
131浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 17:21 , Processed in 0.971477 second(s), Total 70, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号