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.

[参考译文] RM46L852:VLA 和 malloc -如何正确使用堆栈

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1201151/rm46l852-vla-and-malloc---how-to-use-the-stack-properly

器件型号:RM46L852

您好!

我正在使用为 C11配置的 TI ARM 编译器(TI v20.2.7.LTS)构建一个工程。
因为不允许我使用动态内存分配、所以我使用的是 C99功能 VLA。

问题:通过检查 VLA 的内部,我发现分配一个将使用的 VLA 调用_VLA_alloc() malloc 来分配存储器。

我已查看过  ARM 优化 C/C++编译器 v20.2.0.LTS 用户指南、未成功。

我更正说 VLA 实际上不使用堆栈吗?  
Vlas 是否保证了正常释放内存?
Vlas RTOS 是否安全?
是否有办法安全地使用它们?  
标准库中是否有 alloca 函数?

此致、  
加布里埃尔

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

    您好、Gabriel:

    我们已加入相关专家、请 留出一些时间进行审查和提供相关反馈。 谢谢你。

    此致、

    Zackary Fleenor

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

    谢谢 Fleenor。

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

    您好!
    有任何更新吗?
    这对于安全认证至关重要。

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

    尊敬的 Gabriel:

    [quote userid="550002" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1201151/rm46l852-vla-and-malloc---how-to-use-the-stack-properly 我更正了 VLA 实际上不使用堆栈了吗?  [/报价]

    malloc()分配的变量存储在堆内存中,而不是栈中。

    我不知道 VLA RTOS。 在 FreeRTOS 中, 最好使用 FreeRTOS 版本的 malloc 和 free:pvPortMalloc ()和 vPortFree ()。

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

    您好、QJ:  

    感谢您的回答。

    据我了解、Vlas 属于 C 运行时的一部分
    因此、这是一个 TI 实现问题、 而不是 FreeRTOS。

    要明确的是、我们不使用 FreeRTOS 堆。

     

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

    尊敬的 Gabriel:

    谢谢 Gabriel。 我知道 VLA 代表"可变长度数组"。 TI ARM 编译器支持 VLA。 正如您说过的、通过调用 malloc 来为可变长度数组分配内存。  所以、你需要确保 为使用 VLA 分配足够的堆内存。  

    Vlas 是否保证了正常释放内存?
    Vlas RTOS 是否安全?
    是否有办法安全地使用它们?  
    标准库中是否有 alloca 函数?

    我不知道这些问题的答案。 您能否将这些问题发布到 TI CCS/编译器论坛? 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我得到 VLA 表示"可变长度数组"。 [/报价]

    是的、没错。 我的道歉,这在我的问题不清楚。

    您能将这些问题发布到 TI CCS/编译器论坛吗? [/报价]

    是的、我会这么做。 谢谢

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

    谢谢、Gabriel。  

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

    这里是我的新主题的链接。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1205940/rm46l852-vla-and-malloc---how-to-use-the-stack-properly

    我将完成这一步