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.

[参考译文] 编译器/TMS320F2806:.map 文件中的堆在哪里?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/696873/compiler-tms320f2806-where-is-the-heap-in-my-map-file

器件型号:TMS320F2806

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

这是一个 C2000项目。 我已经在 C2000链接器/基本选项中指定了堆栈和堆段。 我在链接器命令行上看到--heap_size=0x200 --stack_size=0x200、这是准确的。 但是、在.map 文件中、我看不到对堆(即 .esysmem)的任何引用。

如果我在代码中添加对 malloc()的调用, .esysmem 会突然出现在.map 文件中,请求的大小为0x200。

我不使用 malloc(),但我使用 sprintf(),所以我确实需要一个堆。

在 这种情况下、.esysmem 为什么不会显示在.map 文件中?

也许它是.ebss 段的一部分?

在 这种情况下、它不会生成.esysmem 段似乎很奇怪...

谢谢你。

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

    mark Foley 说:
     在这种情况下,.esysmem 为什么不在.map 文件中显示?

    函数 sprintf 不调用 malloc (或任何类似函数)。  当没有调用 malloc 时、.esysmem 段不是构建的一部分。   

    谢谢、此致

    乔治