[解決済み】「解放されるポインタが割り当てられていない」とは、具体的にどういう意味ですか?
2021-12-30 10:58:36
質問
C言語を使って、構造化文字列変数に文字列をコピーしているのですが、文字列を解放すると、次のようなエラーが報告されます。
pointer being freed was not allocated
以下のようなコードです。
char str[]=" "; //temporary string to copy to structs string
str[3]=s; //putting a char s in middle
strcpy(matrix[i-1][j].c, str); //copying the string
free(str); //freeing str that now is useless when copied
解決方法は?
の呼び出しによって返されるポインタのみが
malloc()
,
realloc()
または
calloc()
に渡すことができます。
free()
(ヒープ上に動的に確保されたメモリ)。セクションから
7.20.3.2 フリー関数
C99規格の
free関数は、ptrが指す領域を解放します。つまり、次の割り当てができるようにします。ptr がヌルポインタの場合は何も起こりません. それ以外の場合、引数が calloc, malloc, realloc 関数によって先に返されたポインタと一致しない場合、あるいは free や realloc の呼び出しによって領域が解放された場合、その動作は未定義です。
投稿されたコードでは
str
は動的に確保されるのではなく、スタック上に確保され、スコープ外に出た時点で自動的に解放されるようになっており、わざわざ
free()
d.
関連
-
CE5.2版を使って、武術のベースサイトである第一レベルのメソッドを見つける(グラフィックチュートリアル)。
-
複数のサイトをまとめてよく見たい オススメ度
-
パスワード入力を非表示にする InstallShield スクリプト
-
スクリプトとは何かを簡単に説明します。
-
[解決済み】このリポジトリで別のgitプロセスが動作しているようです。
-
[解決済み] ポインタからキャストを使わずに整数を返す [-Wint-conversion] 戻り値の候補を作る
-
[解決済み】ggplot2使用時の永続的な無効なグラフィックス状態エラー
-
[解決済み】math.hを含むにもかかわらず、C言語でpow( )への未定義参照【重複あり
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] ポインタの「デリファレンス」とはどういう意味ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
batスクリプトからログを出力する方法
-
ソフトウェアテスト手法の概要
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】入力文字列のフォーマットが正しくない
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】c++のコンパイルエラーです。ISO C++はポインタと整数の比較を禁止しています。
-
[解決済み】ValueError: 入力配列を形状 (224,224,3) から形状 (224,224) にブロードキャストできませんでした。)
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み】ポインタと整数の比較を警告する
-
[解決済み】git pullしようとするとエラー: .git/FETCH_HEAD を開けない: パーミッションが拒否される