이 코드는 정상적으로 컴파일되지만 실행 중 세그먼트 오류 오류가 발생합니다. 왜 그 이유를 알 수 있습니까?C에서 간단한 문자열 런타임 오류가 발생 했습니까?
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
const char s2[] = "asdfasdf";
char* s1;
strcpy(s1, s2);
printf("%s", s1);
return 0;
}
정상적으로 컴파일하는 코드는 안정적인 프로그램을 보장하지 않습니다.컴파일러는 * 당신을 위해 * 검사를 할 것입니다. 적어도 C 언어가 아닌 모든 가능한 안전하지 않은 프로그램을 제거 할 수있는 방법은 없습니다. 다른 많은 언어는 훨씬 더 보호되어 있지만, 대부분은 당신이 임의의 메모리에 접근하도록하지 않습니다. 방법 C가 않습니다. – quark