This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS v7版本 TI自带库中的memory.c 文件中的free()函数调试问题

麻烦问一下,我在自己的代码中使用了free()函数,跟踪时定位到该函数位于TI提供的库中的memory.c文件中。调试中发现free()函数中的程序不是顺序执行的,而是在代码块中来回跳,如下面的图所示,这是为什么?

另外一个更严重的问题:在程序初始化时我在堆内分配了一个固定大小的空间,空间内包含n个元素,一直留在那里。在程序运行时,我还会给另外的指针动态分配一些空间,但我用free()来释放这些后来分配的空间时,free()的执行效率非常慢,跟踪时发现,free()需要先一个一个遍历完我初始化时分配的n个元素的空间后才能找到我在运行时动态分配的空间,如果那n个元素的粒度很小,那while循环要执行非常多次才能定位到我要释放的空间。这个问题的直接影响是会导致我每一个IO输出都会多出16ms*。这是不是TI提供的这个free()函数的一个缺陷?

(*注:如果在初始化时不开辟那个固定大小的空间,那么运行时free()很快就可以找到我要释放的空间,并且我的IO输出正常)