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.

[参考译文] RTOS/CC2650:HeapBuf align 参数

Guru**** 2584385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/594918/rtos-cc2650-heapbuf-align-argument

器件型号:CC2650

工具/软件:TI-RTOS

您好!

浏览 HeapBuf 的文档、我看到下面的调用分配了一个特定大小的存储器(块大小?) 但是、根据 align 属性、在文档中、它还声明"所有对齐都在创建中处理、因此会忽略 alloc 中的 align 参数"。 这是否意味着我在第三个参数中输入的任何值都不相关? 此外、如果我决定在分配内存之前设置 HeapBuf_Params.blocksize 的大小、为什么需要我们传递 SizeT size 的参数#2? 谢谢!

PTR HeapBuf_alloc (HeapBuf_Handle handle、SizeT sizeSizeT align、Error_Block *EB); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设这是 e2e.ti.com/.../594916的 DUP

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    不、这不是同一个问题。 您所引用的链接是有关初始化 HeapBuf 的问题、该线程是有关在 HeapBuf 中分配存储器的函数调用 、该函数调用与函数参数略有矛盾(至少符合我的理解)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉。 我读取它的速度太快。

    除了执行断言检查(以确保您没有请求无法接受的内容)之外、不使用 HeapBuf_alloc 调用中的对齐方式。

    所有堆模块(例如 HeapMem、HeapBuf 等)必须遵守一个名为 IHeap 的公共接口。 这允许内存模块成为所有内存分配的前端。 因此、即使 HeapBuf 实际上并不需要在 alloc (或 free 上的 size)上使用 align 参数、它们也必须在那里。

    我们建议用户不要直接调用堆模块 alloc 和 free 调用。 我们建议他们改用 Memory_alloc 和 Memory_free。 小层执行一些常见的错误处理和对齐管理。

    Todd