[解決済み] Cのmallocのアサーションに失敗するのはなぜですか?
2022-02-28 22:23:39
質問
OpenCLの実装に対してベンチマークを行うために、分割統治多項式アルゴリズムを実装しているのですが、その際に
malloc
が動作するようになりました。プログラムを実行すると、たくさんのものが割り当てられ、いくつかのものがチェックされ、それから
size/2
をアルゴリズムに渡す。そして、私が
malloc
の行をもう一度書くと、このようになります。
malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
問題の行は
int *mult(int size, int *a, int *b) {
int *out,i, j, *tmp1, *tmp2, *tmp3, *tmpa1, *tmpa2, *tmpb1, *tmpb2,d, *res1, *res2;
fprintf(stdout, "size: %d\n", size);
out = (int *)malloc(sizeof(int) * size * 2);
}
でサイズを確認しました。
fprintf
で、それは正の整数(その時点では通常50)です。 を呼び出してみました。
malloc
をプレーンな数字で入力しても、やはりエラーになります。 Googleで調べても何も出てこないし、どうしたものかと困っています。
何か思い当たることはありますか? コンパイラのエラーであることを想定して、新しいGCCをコンパイルする方法を考えているのですが、本当にそうでしょうか。
解決方法は?
99.9%の確率でメモリが破損しています(バッファのオーバーフローまたはアンダーフロー、解放後のポインタへの書き込み、同じポインタに対して2回freeを呼び出す、など)。
でコードを実行します。 ヴァルグラインド をクリックすると、あなたのプログラムがどこで間違ったことをしたのかがわかります。
関連
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない
-
[解決済み] mallocの結果はキャストするのですか?
最新
-
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言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。