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.

[参考译文] 编译器:在TI-CGT-C6000_Read()中fread()的假行为8.1 .........0

Guru**** 2533260 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/569940/compiler-spurious-behaviour-of-fread-in-ti-cgt-c6000_8-1-0

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

您好,  

我的应用程序需要打开超过32个文件,我可以使用更新的RTS库打开。 我参考以下链接重新编译RTS库并更新宏

_NSTREAM, _nfile

链接到E2E查询:"e2e.ti.com/.../187.529万"。

目前,我能够打开超过32个文件,当我尝试从文件读取数据时,fopen返回0字节读取。


当我尝试调试该问题时,我发现通过malloc的内存请求没有按预期的那样发生。 我附加了malloc失败的代码。
malloc似乎无法分配请求的内存。 我尝试在TestApplication中增加堆内存,但没有任何帮助。 请告诉我如何解决RTS库中的malloc问题。

此致

哈里什  

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

    Harish Midathala 说:
    我可以使用更新的RTS库打开。[/QUOT]

    我假定您已按照  C6000编译器手册中标题为“允许的打开文件数”的部分所述修改了宏_nfile。

    如果malloc失败,则必须已用尽堆中的所有内存。  唯一的解决方案是增加堆的大小。  使用链接程序选项--heap_size=number来控制。  

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是使用RTS库中的默认堆分配系统,还是使用SYS/BIOS堆管理?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我观察到堆内存不足,导致fread->malloc失败
    谢谢,此致
    Harish Midathala