数字を4つ適当に入力して、小さい順に並び替えるプログラムを本を見ながら作りました。
#include<stdio.h> #include <stdlib.h> int main(void) { int num=4; int i,val,j; int array[3]; printf("\n4つの数字を入力してください\n"); for (i=0;i<num;i++) { printf("%dつめの文字列 = ", i+1); scanf("%d", &array[i]); } for(i=1;i<num;i++) { val=array[i]; for(j=i;j>=1 && array[j-1]>val;j--) { array[j]=array[j-1]; } array[j]=val; } printf("\n文字列をソートしました。\n"); for (j=0;j<num;j++) { printf("%d\n", array[j]); } return 0; //exit(EXIT_SUCCESS); }
使用するPCのOSはLinux Mintです。
端末での結果は以下になりました。
$ gcc sort2.c $ ./a.out 4つの数字を入力してください 1つめの文字列 = 9 2つめの文字列 = 5 3つめの文字列 = 4 4つめの文字列 = 3 文字列をソートしました。 3 4 5 9 *** stack smashing detected ***: terminated 中止 (コアダンプ) $
ソースの最後を
exit(EXIT_SUCCESS);
とするとエラーは出ないのですが、
return 0;
とすると出ます。
エラーが出る理由を教えてほしいのです。
今まで return 0; で問題なかったのですが、なんだか不快で理由を知りたいと云うことです。
よろしくお願いします。
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/21 09:15
2021/06/21 09:29
2021/06/21 09:35
2021/06/21 09:43
2021/06/21 09:47