爲什麼有可能超過C中的緩衝區大小達到一定的限制而沒有任何錯誤(分段錯誤)?超過緩衝區大小?
例如,我用這個代碼玩:
#include <stdio.h>
#include <string.h>
void function1(char *a) {
char buf[10];
strcpy(buf, a);
printf("End of function1\n");
}
main (int argc, char *argv[]) {
function1(argv[1]);
printf("End of main\n");
}
我能夠作爲一個參數傳遞最多23個字符,而不是10個字符沒有任何錯誤,但是當我使用24個字符,我收到了分段故障。
我知道用第二十四個字符,我得到了返回值。但以前的13 ??怎麼樣!