动态内存分配问题

了解更多常见问题教程

5个职位/0个新职位
最后一篇文章
图41
离线
最后一次见到:2年4个月前
已加入:2018-08-17 23:02
动态内存分配问题

您好,我在使用这个芯片分配相对较大的阵列时遇到了一个小问题,我使用的是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堆栈对动态内存分配是否有任何限制,或者这可能是我的程序组织中的一个问题。谢谢你的帮助。

设备:
PM\U对话框
离线
最后一次见到:7小时5分钟前
工作人员
已加入:2018-02-08 11:03
你好,41,

你好,41,

我复制了您的问题,您的代码崩溃的原因是当长度超过70时,结构的初始化花费了太长时间,因此WDOG将过期。请尝试在另一个函数中添加初始化代码。例如,我添加了长度为100的结构的初始化,代码没有崩溃。你可以在附件中找到我使用的代码片段。

谢谢,下午好

图41
离线
最后一次见到:2年4个月前
已加入:2018-08-17 23:02
好的,非常感谢我会努力的

好的,非常感谢我会试试这个。是否建议禁用看门狗或至少增加触发时间?

图41
离线
最后一次见到:2年4个月前
已加入:2018-08-17 23:02
最后成了一堆

它最终导致了堆问题,默认情况下,堆大小设置为0x100,即使对于普通应用程序,这个值也非常小。任何在动态内存分配方面有这样问题的人都应该尝试增加boot\u vector.s文件中的堆大小。雷竞技安卓下载

PM\U对话框
离线
最后一次见到:7小时5分钟前
工作人员
已加入:2018-02-08 11:03
你好,41,

你好,41,

很高兴你解决了问题。谢谢你的指示。

谢谢,下午好