c - 在FreeRTOS中,为线程安全重定义 malloc

  显示原文与译文双语对照的内容
0 0

我可以这样做?


#ifdef FREERTOS

#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)

#endif

并希望它总是调用 pvPortMalloc() 而不是 malloc()?

同样,在 #include <stdlib.h> 之前或者之后放置这个值会有什么?

我有一些代码,我想要在FreeRTOS中运行,我想替代 malloc() 调用,在使用FreeRTOS时调用 pvPortMalloc()

时间: 原作者:

0 0

你可以根据你的需求使用客户 malloc 。 你也已经做了。


#ifdef FREERTOS

#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)

#endif

因此,当你想使用FreeRTOS代码时,定义 FREERTOS 标志。 因此,它将使用 pvPortMalloc 从不同的堆管理方案( heap_1.c, heap_2.c 。heap_3 。c 或者 heap_4.c ) 中定义由freeRTOS定义的内存分配。

没有FreeRTOS就不需要 define.So,它将使用来自 #include <stdlib.h>的内置 malloc

,在"#include"之前/之后会有什么区别

我说没有区别。

原作者:
0 0

这将无法正常工作:


#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)

如果使用标准库中的,或者它的他函数,它将调用 malloc_r,这不是为线程保存的。

然而,我不知道如何重定义malloc和 free

原作者:
...