您好,我在使用这个芯片分配相对较大的阵列时遇到了一个小问题,我使用的是SDK 5.0.4,我有一个2结构,
typedef结构{uint8\u t x,uint8\u t y;}s1;
typedef结构{
uint8\t c;
s1*buf;//指向第一个结构数组的指针
}s2;
然后我为第二个结构s2动态分配内存,
s2*mys2=malloc(sizeof(s2));
然后在结构s2的初始值设定项中,我为结构s1分配内存
s2->buf=malloc(sizeof(s1)*长度);
如果内部数组的长度相对较小(70),则一切正常,但如果我将大小增加到该值以上,则程序崩溃,看起来像是内存错误。我看了文档,DA15580有足够的RAM和ROM(82KB ROM,42KB SRAM)。
我的代码基于SDK中的模板,内存分配在初始化函数中调用,该函数在初始化时传递给.app\u。我想知道BLE堆栈对动态内存分配是否有任何限制,或者这可能是我的程序组织中的一个问题。谢谢你的帮助。
设备:
你好,41,
我复制了您的问题,您的代码崩溃的原因是当长度超过70时,结构的初始化花费了太长时间,因此WDOG将过期。请尝试在另一个函数中添加初始化代码。例如,我添加了长度为100的结构的初始化,代码没有崩溃。你可以在附件中找到我使用的代码片段。
谢谢,下午好
好的,非常感谢我会试试这个。是否建议禁用看门狗或至少增加触发时间?
它最终导致了堆问题,默认情况下,堆大小设置为0x100,即使对于普通应用程序,这个值也非常小。任何在动态内存分配方面有这样问题的人都应该尝试增加boot\u vector.s文件中的堆大小。雷竞技安卓下载
你好,41,
很高兴你解决了问题。谢谢你的指示。
谢谢,下午好