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.

[参考译文] 编译器/TMS570LS0432:当堆大小为0时,TI C库malloc()会损坏内存

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/579454/compiler-tms570ls0432-ti-c-library-malloc-corrupts-memory-when-heap-size-is-0

部件号:TMS570LS0432

工具/软件:TI C/C++编译器

随ARM Optimizing C/C++ Compiler (ARM优化C/C++编译器)分发的TI C库的memory.c代码中存在内存损坏问题。


当我使用链接器的--heap_size=0参数指定堆大小为0时,我会看到它。

在这种情况下,TI链接器将分配一个8字节的.sysmem节。

memory. c中的C库库代码将数据存储到该部分,但它隐式地要求8个字节以上。

memory.c代码有一个名为sys_free的指针,该指针从开始指向.sysmem的开头。  在minit()函数内,代码重新分配sys_free指针,并向其添加4个字节。

之后,它将8字节的数据写入sys_ffree指向的内存,这会超出.sysmem部分,从而损坏存储在该部分旁边的任何内存。

--谢谢

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

    有关 您对此问题的疑虑,请遵循此类似的主题。

    谢谢,此致,

    -George