我有一个使用 yagarto GCC 编译器的 STM32F0 应用程序。我已经实现了_sbrk newlib_stubs.c。我遇到的问题是我在调用 _sbrk 并要求 4K 内存时调用 malloc(256) 依次调用 malloc。我的系统总共只有 8K,所以显然这是个问题。我已经监视了对 _sbrk 的调用,它似乎在分配较少的内存之前进行了一些调用。
现在我正在通过捂住鼻子避免恶臭并做类似的事情来解决这个问题:
if(requested > 512)
requested = 512;
在我重新定位堆之前在 _sbrk 中。
尽管该系统看起来坚如磐石,但我相当肯定它会在我最不期待的时候再次出现并困扰我。