charポインタにスペースを割り当てて、割り当てられたスペースを越えてアクセスしようとしましたが、まだセグメンテーション違反は発生しませんでした。私のコードは以下のようになります:割り当てられたスペースを越えてセグメンテーションが発生しない
char *src = malloc(4);
strcpy(src, "1234");
char *temp;
for(int i = 0 ; i<5 ; i++) {
temp = src;
srC++;
printf("ite ch %c\n",src[0]);
}
printf("Still no segfault %s\n",temp);
私の質問は次のとおりです。セグメンテーションフォルトを取得してはいけませんか?
未定義の動作は未定義です。それがまったく検出される保証はありません。 – Deduplicator
Cは低レベルの語彙です。喜んであなたが好きな足で自分を撃つことができ、あなたに警告するかもしれません。 –
「セグメンテーション違反はありませんか?」いいえ、Cではsegaultが指定されていません。 _それは起こるでしょう。それはUBです。他の言語では、segフォルトが発生しなければならないと指定することがあります。これにはしばしば特別なコードやパフォーマンスが必要です。 [トレーニングホイール](https://en.wikipedia.org/wiki/Training_wheels)が必要な場合は、他の言語も検討してください。 – chux