[解決済み] 組み込みプログラミングにおけるzallocとは何ですか?
2022-03-01 20:22:06
質問
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
があります。
関数名
pvPortMalloc
,
vPortFree
と
pvPortZalloc
を見ると、使用されている OS は FreeRTOS (または商用ライセンスの OpenRTOS) のようで、具体的には書かれていませんが
pvPortZalloc
が、単に
アロケートとゼロ初期化
- というのは、例えば次のような意味です。
これ
. この関数はFreeRTOSのターゲット移植層の一部であり、通常アプリケーションレベルでは呼び出されませんが、ここではマクロラッパーを使って移植層のコードを二重に書かずにアプリケーションユーザがアクセスできるようにしていると想像されます。
RTOSカーネルでは、スレッドセーフを確保するためにRTOSを意識した動的メモリ割り当て関数が必要ですが、標準ライブラリ実装の中には、RTOSのミューテックス呼び出しを使用して実装するスレッドセーフスタブがあり、これは既存のライブラリやC++を使用しているのでより良い方法です。
new
/
delete
をより簡単に使用することができます。
関連
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】定義と宣言の違いは何ですか?
-
[解決済み】ストリクト・エイリアシング・ルールとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】makefile:4。*** missing separator. 停止する