[解決済み] C言語でメモリを解放するにはどうしたらいいですか?
2022-03-04 16:11:59
質問
1次元と2次元の配列がたくさんあるコードを書いています。error: can't allocate region"と表示され、メモリが多すぎるためだと思います。私は "malloc" と "free" 関数を使用していますが、正しく使用できているかどうかわかりません。C言語でのメモリ管理について良い例を見ることができる場所をご存知でしょうか?
だから... 私はただ1つのアルゴリズムを動作させようとしているだけで、今のところこのコードは関数に次ぐ関数なのです...
//memory allocation for 1D arrays
buffer = malloc(num_items*sizeof(double));
//memory allocation for 2D arrays
double **cross_norm=(double**)malloc(150 * sizeof(double *));
for(i=0; i<150;i++)
{
cross_norm[i]=(double*)malloc(num_items*sizeof(double));
}
//code
Window(N, window_buffer);
STFTforBMP(buffer,N,f, window_buffer);
getMagnitude(buffer,f, N, magnitude);
calculateEnergy(flux,magnitude, f);
calculateExpectedEnergy(expected_flux, candidate_beat_period, downbeat_location, f);
calculateCrossCorrelation(cross, flux, expected_values, f);
findLargestCrossCorrelation(&cross_max, cross, f);
normalizeCrossCorrelation(cross_norm, &cross_max, cross, f);
...............
をどのように使用すればよいのでしょうか?
free
関数を使用してください。
どのように解決するのですか?
以下のことが必要です。
free()
を使用して割り当てたのと全く逆の順序で、割り当てられたメモリを削除します。
malloc()
.
注意:メモリを解放するのは、割り当てられたポインタの利用が終了してからにしてください。
1次元配列のメモリ割り当て
buffer = malloc(num_items*sizeof(double));
1次元配列のメモリ解放。
free(buffer);
2D 配列のメモリ割り当て。
double **cross_norm=(double**)malloc(150 * sizeof(double *));
for(i=0; i<150;i++)
{
cross_norm[i]=(double*)malloc(num_items*sizeof(double));
}
2D 配列のメモリ解放。
for(i=0; i<150;i++)
{
free(cross_norm[i]);
}
free(cross_norm);
関連
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] Androidでアプリケーションのメモリ使用量を確認するにはどうすればよいですか?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] Pythonで明示的にメモリを解放するにはどうしたらいいですか?
-
[解決済み】ローカル変数のメモリはスコープ外からアクセスできる?
-
[解決済み】標準ライブラリを使ってアライメントされたメモリのみを割り当てるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】strcmpが機能しない
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】シンプルなC言語のscanfが機能しない?重複