ヒープメモリの使用(malloc/new)は非決定論的なプログラムを作るか?
2023-08-25 03:41:43
質問
数ヶ月前から宇宙用のC言語でリアルタイムシステム用のソフトウェアを開発したり、C++でマイコン用のソフトウェアを開発したりしています。このようなシステムには経験則として ヒープオブジェクトを作るべきではない (だから malloc/new はダメ) という経験則があります。 非決定論的 . と言われても、その正しさを検証することはできませんでした。そこで これは正しい発言なのでしょうか?
私の知る限り、決定論とは、プログラムを 2 回実行すると、まったく同じ実行経路になることを意味します。私の理解では、同じプログラムを複数回実行すると、毎回異なるスレッドが異なる順序で実行される可能性があるため、これはマルチスレッド システムの問題です。
どのように解決するのですか?
リアルタイム システムのコンテキストでは、決定性には、繰り返し可能な実行パス以上のものがあります。 もう 1 つの必要な特性は、重要なイベントのタイミングが制限されることです。 ハード リアルタイム システムでは、許可された時間間隔の外側 (その間隔の開始前または終了後) に発生するイベントは、システム障害を表します。
このコンテキストでは、動的なメモリ割り当ての使用は、特にプログラムが割り当て、解放、および再割り当てのパターンを変化させる場合、非決定性を引き起こす可能性があります。 割り当て、解放、および再割り当てのタイミングは時間と共に変化するため、システム全体のタイミングは予測不可能になる可能性があります。
関連
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】C++の余分な資格エラー
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] インテル Sandybridge ファミリー CPU のパイプラインのためのプログラムの最適化解除
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] 配列のベクトルを扱う正しい方法