1. ホーム
  2. segmentation-fault

[解決済み] SIGSEGVが発生する原因

2022-03-04 19:27:07

質問

セグメンテーションフォールト(SIGSEGV)の根本的な原因と対処法を教えてほしい。

解決方法を教えてください。

ウィキペディア は、他の多くの情報源とともに、その答えを持っています。

セグメンテーションフォールトは、基本的にポインターで何か悪いことをしたことを意味します。これはおそらくセグメンテーションフォールトです。

char *c = NULL;
...
*c; // dereferencing a NULL pointer

あるいは、こうだ。

char *c = "Hello";
...
c[10] = 'z'; // out of bounds, or in this case, writing into read-only memory

あるいは、こうかもしれない。

char *c = new char[10];
...
delete [] c;
...
c[2] = 'z'; // accessing freed memory

いずれの場合も基本的な原理は同じで、自分のものではないメモリを使って何かをしていることになります。