[解決済み】C言語で "Abort trap: 6 "エラー?
2021-12-30 16:45:42
質問
C言語のコードは次のとおりです。
#include <stdio.h>
#include <string.h>
int main(){
char name[12] = "Roman Mirov";
printf("My name is %s\n", name);
name[8] = 'k';
printf("My name is %s\n", name);
char greeting[] = "hello";
printf("%s %s\n", greeting, name);
strcpy(greeting, "greetings, ");
printf("%s%s\n", greeting, name);
return 0;
}
gcc を通して xcode で実行すると、コンソールに表示されます。
My name is Roman Mirov
My name is Roman Mikov
hello Roman Mikov
Abort trap: 6
最後の行は、"greetings, Roman Mikov"が出力されません。
解決方法は?
この場合、宛先の
greeting
の内容をすべて格納するのに十分なスペースがありません。
ソース
を呼び出す境界外アクセスです。
未定義の動作
.
詳しく説明すると、配列のサイズ
greeting
は、与えられたイニシャライザのサイズによって決定されます。
char greeting[] = "hello";
この場合
"hello"
で、ヌルターミネータを含めて6個となる。
さて、後でもっと大きな 文字列 をメモリに格納します。
strcpy(greeting, "greetings, ");
ここで、ソースは12バイトのサイズであるのに対し、デスティネーションは6バイトしかありません。このため、バウンダリーオーバーランが発生し、UBという結果になります。UBの副作用として、クラッシュ(またはアボート)が発生する可能性があります。
関連
-
複数のサイトをまとめてよく見たい オススメ度
-
[解決済み】プッシュしようとするとGitエラーになる -- pre-receive フックが減少した
-
[解決済み】R: predict() で数値 'envir' 引数が長さ1でない。)
-
[解決済み】「Error: デフォルトのデータセット例mtcarsとggplot2における「離散的なスケールに連続的な値が供給された」。
-
[解決済み】ValueError: 入力配列を形状 (224,224,3) から形状 (224,224) にブロードキャストできませんでした。)
-
[解決済み】dyld: ライブラリがロードされない ... 理由: 画像が見つからない
-
[解決済み】ファイルにデータを書き込むときにこのエラーが発生する理由
-
[解決済み】C#コンパイラーエラー。"すべてのコードパスが値を返すわけではない"
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
FcScript V1.0 ヘルプファイル(説明書付き
-
[解決済み】「g++」が内部コマンド、外部コマンド、操作可能なプログラム、バッチファイルとして認識されない。
-
[解決済み】C++エラー: 予想されるunqualified-idを修正する方法
-
[解決済み】lm.fit(x,y,offset = offset, singular.ok,...) boxcox式で0非NAケースでエラーになる。
-
[解決済み】gitが「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み】ポインタと整数の比較を警告する
-
[解決済み】拡張メソッドは、一般的でない静的クラスで定義する必要がある
-
[解決済み] C言語でのAbort trap 6エラー