我爲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號不會指定你_should_ seg故障。它可能會發生。這是UB。其他語言可能會指定seg故障必須發生。這通常需要額外的代碼或性能。如果需要[訓練輪](https://en.wikipedia.org/wiki/Training_wheels),請考慮其他語言。 – chux