耗尽堆内存(Realloc和Calloc)

4个帖子/ 0新
最后一篇
布莱恩
离线
最后一次露面:6年1个月前
专家 掌握
加入:2014-10-16 18:10
耗尽堆内存(Realloc和Calloc)

我在服务发现期间保存了在服务发现期间的最小服务,特征和描述符的内存中的内存耗尽了,以启用通知/指示。Realloc和Calloc失败了。我正在寻找/配置更多内存。我在* _config.h看这个

#f定义(cfg_ext_sleep)||!定义(cfg_deep_sleep)
#define reinit_descript_buf 0 // 0:保持在逆行状态,1:需要重新init(使用延长睡眠时设置为0)
#define use_memory_map ext_sleep_setup.

#别的
/ *以下对BLE_CONNECTION_MAX_USER == 1有效。请使用EXCEL工具的结果!* /
#define reinit_descript_buf 0 // 0:保持在逆行状态,1:需要重新init(使用延长睡眠时设置为0)
#define use_memory_map deep_sleep_setup.
#define db_heap_sz 1024.
#define env_heap_sz 328
#define msg_heap_sz 1312.
#define non_ret_heap_sz 1024.
#万一

并且还查看我刚下载的Excel电子表格(不是说我了解如何使用它)。我有一个支持最大连接数(6)但未曝光服务。在电子表格中的所有情况下,我看到db_heap_sz设置为1024.为什么?对我来说,浪费了1024个字节的记忆,这将在我的情况下走很长的路。

我不明白的是当我realloc或calloc时正在使用的内存。试图读取名称并出发一些意识,我认为它是env_heap_sz或non_ret_heap_sz。任何状况之下,

1.如何找到我可以为这些各种领域保留多少内存?
2.可以将DB_HEAP_SZ设置为零吗?
3.是否有其他(代码,方法,文件等)与我可以删除的数据库有关?
4.如何使用像#define rwip_heap_non_ret_size_user 2048 //(1024 * ble_connection_max_user)等项目协调这些电子表格设置em_map_ble_user.h文件的项目?

此外,将上述改变为:
#f定义(cfg_ext_sleep)||!定义(cfg_deep_sleep)
#define reinit_descript_buf 0 // 0:保持在逆行状态,1:需要重新init(使用延长睡眠时设置为0)
#define use_memory_map ext_sleep_setup.

#别的
/ *以下对BLE_CONNECTION_MAX_USER == 1有效。请使用EXCEL工具的结果!* /
#define reinit_descript_buf 0 // 0:保持在逆行状态,1:需要重新init(使用延长睡眠时设置为0)
#define use_memory_map deep_sleep_setup.
#define db_heap_sz 0 // 1024
#define env_heap_sz 1980 // 328
#define msg_heap_sz 4844 // 1312
#define non_ret_heap_sz 2060 // 1024
#万一

没有区别;Calloc在完全相同的地方失败了。

tr_dialog.
离线
最后一次露面:2个月1日前
职员
加入:2014-06-30 23:52
当你发现你的时候

当您检测到内存不足时,它可能是由于两个原因之一:1)内存泄漏2)堆大小不足。如果您已经排除了内存泄漏,那么它是时候关注堆大小,如上所述。调试此问题的一种方法是检查地图文件。这将为您了解您拥有多少头室,并相应地调整软件。

布莱恩
离线
最后一次露面:6年1个月前
专家 掌握
加入:2014-10-16 18:10
tr_dialog,

tr_dialog,

不幸的是,你已经知道了我已经知道的。我询问的是各种堆消息分配的含义。用户内存分配在哪里,我甚至可以控制它等吗?如何使用电子表格中的信息?任何关于任何此材料的文件都没有文件。如果没有任何理解,关于各种堆分配的意思,我盲目地尝试了基于这个词(猜测他们可能是卑鄙的方式改变上述一些)。当您从我的评论中看到时,我所做的任何更改都没有任何影响CalloC失败。发生在完全相同的地方。我不知道这些变化的其他后果,但到目前为止它似乎没有任何影响。

请将我指出一些文档,解释了各种堆分配的意思,如何(甚至If)如何更改它们,以及控制用户的堆大小(通过使用Realloc抓取)/或Calloc)。

tr_dialog.
离线
最后一次露面:2个月1日前
职员
加入:2014-06-30 23:52
可用文件

内存用法的可用文档以及“内存地图Excel工具”如下:“UM-B-011:用户手册 - DA14580内存映射和分散文件1.1”

http://support.dialog-seminile.com/system/files/restricted/um-b-011.pdf.