argvを介したユーザー入力によって、セグメンテーションエラーが発生する小さなプログラムを作成したいと思います。私はCにまったく慣れていませんが、次のコードがその役目を果たしていると思います。
int main(int argc, char *argv[])
{
int bufferSize;
char * buffer[100];
unsigned int i;
if (argc > 1) {
bufferSize = atoi(argv[1]);
for (i = 0; i < bufferSize; ++i)
*( buffer + i ) = i;
}
return 0;
}
私の考えは、プログラムが特定のサイズのバッファーへのポインターを初期化(?)することです。次に、ユーザーがバッファサイズよりも大きい数値を入力すると、初期化されていないメモリに書き込まれるため、セグメントが取得されます。障害。この推論はまったく正しいですか?
追伸 コンパイルするとき、I get a assignment makes pointer from integer without a cast
警告するとき、誰かがそれがなぜ起こるのか教えてもらえますか?ありがとう