C/C++教程

TDA4 RTOS内存分配(c:malloc,c++:new)

本文主要是介绍TDA4 RTOS内存分配(c:malloc,c++:new),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        在TDA4 PSDK里有三种内存分配api,分别是c语言的malloc,c++的new以及psdk提供的appMemAlloc。其中malloc和new的内存来源是一样的,由xdc的xdc.runtime.Memory模块提供api,内存来源是DDR_XXXX_X。appMemAlloc由openvx提供api,内存来源是DDR_XXXX_X_LOCAL_HEAP。内存的布局请参考各个核目录下的linker_mem_map.cmd文件,这里不做展开。

        本来想把所有内存分配api统一管理起来,但发现目前的框架并不支持,因为各自的api的源码都是独立的,没有一个统一的管理。并且似乎无法把内存来源都指向DDR_XXXX_X_LOCAL_HEAP段,因此放弃这个伟大的统一想法。

        但xdc.runtime.Memory的默认heap大小只有768KB,像c++的new,内置内存管理的stl容器,以及c的malloc等都是使用该内存,用着用着就会内存不足,因此可以通过修改vision_apps/apps/basic_demos/app_tirtos/bios_cfg/bios_common.cfg配置文件的Memory.defaultHeapSize值来改变heap大小。下图将heap大小改为了8MB.以上修改在PSDK7.00上测试通过。

 

这篇关于TDA4 RTOS内存分配(c:malloc,c++:new)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!