This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们正在使用动态内存。 我无法找到是否使用 malloc、文档中 iCall_malloc 和常规 malloc 之间的区别。 您能否详细介绍此主题? 我们可以互换使用 mallocs 吗?
您好!
我指派了一名专家来帮助您的查询。
此致、
1月
尊敬的 Deniz:
感谢您在 E2E 论坛上发帖、
[引用 userid="144578" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1013270/cc2640r2f-what-s-the-difference-between-malloc-and-icall_malloc ]]我无法找到是否使用 malloc、文档中 iCall_malloc 和常规 malloc 之间的区别iCall_malloc 处理 TI-RTOS、协议栈和应用之间动态内存分配的管理、而普通 malloc 则不会。
[引用 userid="144578" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1013270/cc2640r2f-what-s-the-difference-between-malloc-and-icall_malloc "]我们是否可以使用 mallocs 进行互换?我们建议应用程序使用 iCall API 来分配任何动态内存。
您可以在 BLE5用户指南 的 ICall 部分和 动态内存分配 部分中找到有关堆和内存管理的更多信息。
希望这有所帮助、
NIMA Behmanesh
尊敬的 Deniz:
我只是想跟进、我的回复是否有用?
最棒的
NIMA Behmanesh
你好、Nima、
我已经阅读了你提供的文本。 TI 应该扩展这些段、因为堆是一个重要的部分。 TI 还应该详细介绍块分配、它们在实现中使用的取消分配方法、因为有许多堆算法具有不同的性能损失。
我真正想了解的是、如果我将 malloc 与 iCall_malloc 混合在一起、会发生什么情况。 如果我们使用"新建"运算符、它似乎使用 malloc、而不是 iCall_malloc。 我们是否必须过载新操作员?
我希望 TI 将 malloc 重定向到 iCall_malloc 以防止误用.. 或者让我们再问一个问题、如果有2个 malloc 函数、我应该何时使用标准 malloc?
尊敬的 Deniz:
感谢您的反馈! 我将深入了解这些部分、看看我们如何在将来扩展它们。
[引用 userid="144578" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1013270/cc2640r2f-what-s-the-difference-between-malloc-and-icall_malloc/3754486 #3754486"]让我们再问一个问题:如果有2个 malloc 函数、我应该何时使用标准 malloc?不应使用标准 malloc(),因为 iCall_malloc()处理所有栈的内存分配。 此外、ICall API 允许您使用 HeapMem 和其他堆跟踪工具、而 ICall 函数是非阻塞的。
如果我做了更多的研究、我明天将向您介绍"新"运营商。
最棒的
NIMA Behmanesh
尊敬的 Deniz:
下面是有关“new”运算符和 malloc()不同版本的更新。
如果您使用的是 BLE 堆栈,则建议使用 iCall_malloc()。 但是、如果您不使用 TI-RTOS 或任何其他堆栈、则可以使用 malloc()。 如果您使用的是 TI-RTOS,而不是整个 BLE 堆栈,那么您将使用 Memory_alloc()和相关的自由函数。 此外、如果你想实现你自己的 malloc()、你可以在 rtos_heapme.h 中定义它 如需更多信息、 请点击此处。
如果要使用“new”运算符,则建议将“new”运算符重载以使用 iCall_malloc()。
希望这有所帮助、
NIMA Behmanesh
尊敬的 Deniz:
只是想跟进、我的回复是否有用?
最棒的
NIMA Behmanesh
感谢您的澄清。 最后一个问题:iCall_malloc 中断、 SVC 安全吗? 我看到在中断回调中使用 iCall_malloc 的示例。 用于邮箱等用途.. 在中断回调中使用动态存储器会让我紧张。
尊敬的 Deniz:
是的、iCall_malloc 中断是线程安全的。 然而、由于时序限制、内存分配例程不会从诸如硬件中断(HWI)或软件中断(SWI)等高优先级线程中调用。 完成这些任务可能需要太长的时间、从而中断其他低优先级任务的实时处理。
最棒的
NIMA Behmanesh