我可以这样做吗?
#ifdef FREERTOS
#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)
#endif
并且期望它总是调用pvPortMalloc()
而不是malloc()
另外,把它放在#include <stdlib.h>
之前/之后有什么区别呢?
我有一些代码想要在FreeRTOS内部和外部运行,我想在使用FreeRTOS时将对malloc()
的所有调用替换为对pvPortMalloc()
的调用。
发布于 2014-06-10 13:08:48
您可以根据需要使用custome malloc
。你也已经做过了。
#ifdef FREERTOS
#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)
#endif
因此,当您想在FreeRTOS中使用代码时,请定义FREERTOS
标志。因此,它将使用pvPortMalloc
进行freeRTOS从不同堆管理方案(heap_1.c、heap_2.c、heap_3.c或heap_4.c)定义的内存分配。
如果没有FreeRTOS不需要define.So,它将使用来自#include <stdlib.h>
的内置malloc
同样,在“#”之前/之后放置这个选项有什么区别呢?
我说没什么区别。
发布于 2015-05-07 15:38:47
这将无法正常工作:
#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)
如果您使用printf、sprintf或标准库中的其他函数,它将调用malloc_r,这不是为线程保存的!
然而,我不知道如何重新定义malloc和free。
https://stackoverflow.com/questions/24141398
复制相似问题