6

ESP8266 シリアル wifi チップのプログラミングを検討しています。その SDK の例では、os_zallocwhere I would expectedと呼ばれる関数を広範囲に使用してい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
4

2 に答える 2

8

はマクロであり、定義は mem.h で与えられているためos_zalloc、より適切な質問は、何pvPortZallocが機能するかについてです。

関数名pvPortMallocを考えると、使用中のOSはFreeRTOS(または商用ライセンスの同等のOpenRTOS)であると思わvPortFreeれます.たとえば、ここでの意味。関数は FreeRTOS のターゲット ポーティング レイヤーの一部であり、通常はアプリケーション レベルで呼び出されることはありませんが、ここではマクロ ラッパーを使用して、アプリケーション ユーザーのポーティング レイヤー コードに 2 回書き込むのではなくアクセスしていると思います。pvPortZallocpvPortZalloc

RTOS カーネルでは、スレッド セーフを確保するために RTOS 対応の動的メモリ割り当て関数が必要ですが、一部の標準ライブラリの実装には、RTOS ミューテックス呼び出しを使用して実装するスレッド セーフ スタブが含まれていますnewdelete使用済み。

于 2015-01-10T23:15:08.160 に答える
4

「メモリを割り当ててゼロで埋める」と言うでしょう

于 2015-01-10T21:21:59.083 に答える