gpt4 book ai didi

c - 嵌入式编程中的zalloc是什么?

转载 作者:太空狗 更新时间:2023-10-29 14:54:00 26 4
gpt4 key购买 nike

我正在研究 ESP8266 串行 wifi 芯片的编程。在它的 SDK 示例中,它广泛使用了一个名为 os_zalloc 的函数,我希望它是 malloc

偶尔也会使用 os_malloc。所以它们在功能上似乎并不相同。

遗憾的是没有文档。任何人都可以从以下头文件中做出有根据的猜测吗?

#ifndef __MEM_H__
#define __MEM_H__

//void *pvPortMalloc( size_t xWantedSize );
//void vPortFree( void *pv );
//void *pvPortZalloc(size_t size);

#define os_malloc pvPortMalloc
#define os_free vPortFree
#define os_zalloc pvPortZalloc

#endif

最佳答案

因为 os_zalloc 是一个宏,并且在 mem.h 中给出了定义,所以更好的问题是关于 pvPortZalloc 的作用。

鉴于函数名称 pvPortMallocvPortFreepvPortZalloc,使用的操作系统似乎是 FreeRTOS(或者它的商业许可等效 OpenRTOS ),这是有记录的——虽然不是特别pvPortZalloc,但如果它不是简单的分配和零初始化会很奇怪——例如这就是它的意思here .这些函数是 FreeRTOS 目标移植层的一部分,通常不会被应用程序级别调用,但我想这里宏包装器用于为应用程序用户访问移植层代码,而不是编写两次。

在 RTOS 内核中,需要 RTOS 感知的动态内存分配函数来确保线程安全,尽管一些标准库实现包括使用 RTOS 互斥调用实现的线程安全 stub ,这是一种更好的方法,因为现有的库和 C++ new/delete 可以更容易使用。

关于c - 嵌入式编程中的zalloc是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com