您好!
当我调用“status=attmdb\u add\u服务(shdl,dest\u id,nb\u att\u uuid\u 16,0,nb\u att\u uuid\u 128,total\u size);”函数
注意:16=15
nb\u att\u uuid\u 128=6个
总尺寸=868
软件崩溃了。如果总大小小于868是正常的。我试图增加堆大小,但结果是一样的。
如果我在函数前后放置一个调试打印,我可以看到它在基金会内部崩溃。
设备:
你好,佩尔·克里斯蒂安森,
设备崩溃的原因是因为数据库堆用完了,这是设备分配数据库请求的内存量的地方,您已经提到您已经准备好启动堆了(是DB\u heap\u SZ定义吗?)。显然,您增加了错误的堆类型,或者在设备以不同的睡眠模式运行时增加了DB堆大小。例如,如果您想增加DB_HEAP_SZ,请转到da1458x_conifg_advanced.h文件,并在#if defined(CFG_MEM_MAP_EXT_SLEEP)| |下!defined(CFG_MEM_MAP_DEEP_SLEEP)添加以下具有相应大小的define DB_HEAP_SZ。
谢谢你的对话
您好!
在这种情况下,我认为函数应该返回“ATT\u ERR\u INSUFF\u RESOURCE”,而不是崩溃。
每
你好,佩尔·克里斯蒂安森,
设备没有崩溃,只是因为调用了wrap\u platform\u reset()而重置,是的,函数应该返回您提到的内容,之所以没有,是因为分配所需空间的malloc函数只是在函数返回之前调用重置,因此,如果我让您正确地发出问题,那么您的设备将在wrap\u platform\u reset()中结束,并且您应该得到的错误消息是reset\u MEM\u ALLOC\u FAIL。所以请试着遵循我上面提到的。
谢谢你的对话