jay*_*jay 5 c malloc std freertos c-preprocessor
我可以做这样的事情吗:
#ifdef FREERTOS
#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)
#endif
Run Code Online (Sandbox Code Playgroud)
并期望它总是调用pvPortMalloc()而不是malloc()?
另外,把它放在之前/之后会有什么区别#include <stdlib.h>?
我有一些代码想要在 FreeRTOS 内和外运行,我想将所有调用替换为使用 FreeRTOS 时的malloc()调用pvPortMalloc()。
您可以malloc根据您的要求使用客户。你也已经做到了。
#ifdef FREERTOS
#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)
#endif
Run Code Online (Sandbox Code Playgroud)
因此,当您想在 FreeRTOS 中使用代码时,请定义FREERTOS标志。因此它将用于pvPortMallocfreeRTOS 从不同堆管理方案(heap_1.c、heap_2.c、heap_3.c 或 heap_4.c)定义的内存分配。
没有 FreeRTOS 不需要定义。所以它将使用内置 malloc的#include <stdlib.h>
另外,将其放在“#include”之前/之后会有什么区别?
我说没有什么区别。