工具/软件:TI C/C++编译器
描述:
CCS版本:7.0 .0.0.0042万
C2800编译器工具16.9 .1.LTS
程序始终关闭,malloc失败:
该程序正在执行的操作是接收USB消息(约140字节有效负载),然后将其分解为CAN消息(最多8字节有效负载), 并将CAN消息回复从设备转发到USB端口。
代码中有一些malloc()和free()。
我在链接程序配置中分配了一个大堆大小(len: 0x2000,来自0xA000)
esysmem 10000 0000a0万 0000.2万未初始化
0000a000 000000010万00001 rts2800_fpu32.lib0.0001万 rts2800_fpu32.lib:2800:memory.obj (.esysmem)
0000a001 00001fff100001fff --孔-
我还编写了一个数组,用于记录 每个malloc / delete操作的开始地址和分配内存的长度。
bool recordMalloc (UINT32 startAddr,UINT32 len)
{
#ifdef memory_record_LEN
int i;
用于(i=0;i<memory_record_LEN;i++){
如果(memory_record[I].len == 0){
memory_record[I].startAddr = startAddr;
memory_record[I].len = len;
返回true;
}
}
返回false;
#endif
}
bool recordFree (UINT32 startAddr)
{
#ifdef memory_record_LEN
int i;
用于(i=0;i<memory_record_LEN;i++){
如果(memory_record[I].startAddr == startAddr){
memory_record[I].startAddr = 0;
memory_record[I].len = 0;
返回true;
}
}
返回false;
#endif
}
我发现当程序停止运行时,似乎没有内存泄漏:
它还剩下大量的堆内存。
有任何线索? 谢谢。