TI中文支持网
TI专业的中文技术问题搜集分享网站

关于6678的内存释放问题

有个函数里面有以下一段语句:

im = new float【100】【100】;

.。。。

。。。

delete   [ ]im;

然后程序跑第一次这个函数,(delete  [ ]im; ) 这个语句耗时是300多,第二次跑变600多,随着调用次数增加,耗时不断增加

请问这是什么原因,应该怎么写才能使  内存释放耗时稳定?

(除了统一在全局那里申请内存的方式,我现在就想在函数里面这么弄,请问有什么解决方法吗?很好奇这个到底是什么原因)

King Wang1:

有好几种原因会导致每次函数耗时差别,这里举几个例子:

1)cache的情况,包括数据cache和代码cache。比如函数代码在不在cache中会导致代码读入的时间不同,如果在cache中,那么每次耗时1cycle,否则就根据代码所在位置决定耗时,可以使10cycle(L2),也可以是100cycle(DDR);

2)带OS的中断情况,如果有OS运行那么任务可能被中断打断,这就无法保证任务中某个函数的时间消耗。

所以LZ你的问题,如果你在任务中的,你可以在进入之前关中断,执行函数后开中断,那么你重复malloc和free测试你会发现基本每次free都是相似的结果。

赞(0)
未经允许不得转载:TI中文支持网 » 关于6678的内存释放问题
分享到: 更多 (0)