godjohsn 2021-03-03 23:23 采纳率: 0%
浏览 161

CCS5.5堆栈的问题?

环境:CCS5.5

DSP:TMS320C6748

基于SYSBIOS开发的程序,

code memory、data memory、stack memory全都放在了DDR中。

map文件如下:

MEMORY CONFIGURATION

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
  IROM                  11700000   00100000  00000000  00100000  R  X
  L3_CBA_RAM            80000000   00020000  00000000  00020000  RW X
  DDR                   c0000000   08000000  000dd628  07f229d8  RW X

 

 

程序编译时一直有一个警告:

ti.sysbios.BIOS heapSize: BIOS.heapSize and Memory.defaultHeapInstance have both been set.  BIOS.heapSize ignored.  Using Memory.defaultHeapInstance.

根据警告信息路径是在.xdchelp文件中,但.xdchelp文件是一个大小为0的空文件。

程序大多数时候运行正常,但有时在debug时控制台Console中会出现如下错误然后终止:

TCP: Retransmit Timeout ti.sysbios.heaps.HeapMem: line 322: assertion failure: A_invalidFree: Invalid free xdc.runtime.Error.raise: terminating execution

 

请问是什么原因?如何解决?

 

ps:有人说是内存没有正确释放

查了一下,程序中有3个动态指针,但是malloc之后应当free了:

struct DATA1 *pdata1 = NULL;

struct DATA2 *pdata2 = NULL;

struct DATA3 *pdata3 = NULL;

pdata1 = (struct DATA1 *)malloc(sizeof(struct DATA1 )*N);

for(...)

{...}

if(a>10)

{

pdata2 = (struct DATA2 *)malloc(sizeof(struct DATA2 )*N);

...

free(pdata2);

}

free(pdata1);

...

pdata3 = (struct DATA3 *)malloc(sizeof(struct DATA3 )*N);

i=1;

if(i==1)

{i=2;}

else if(i==2)

{...

free(pdata3 );//i=2的条件肯定可以满足,因此pdata3一定可以正常free

}

else

{...}

 

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 优质github账号直接兑换rmb,感兴趣伙伴可以私信
    • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
    • ¥15 安装svn网络有问题怎么办
    • ¥15 Python爬取指定微博话题下的内容,保存为txt
    • ¥15 vue2登录调用后端接口如何实现
    • ¥65 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)