서버 버전을 업데이트해야하는 시나리오가 있습니다. g ++ 버전을 사용하면 새로운 버전에서 오류가 발생하기 시작한 코드가 실제로 세그먼트 화됩니다. 결점).잠재적 인 버그를 발견 한 C++ 최적화 수준
#include<stdio.h>
int main()
{
char s[8]={'\0'};
sprintf(s,"overflow");
return 1;
}
컴파일했다가 g ++가 file.cc -O2
우리가 지정하는대로 따라서 최적화 오류가 발생할 한 전체 문자열 S : 그런 다음 코드를 디버깅,이 같은 뭔가 깨달았다 , 그리고 NULL 종료가 없습니다. 위의 오류가 잘못된 프로그래밍 관행으로 인해 빠질 수 있으므로 g ++의 다른 버전으로 이동할 때 특히 최적화 플래그를 ON으로 사용하는 것이 좋습니다.
잘못된 코드는 잘못된 코드입니다. 너는 운이 좋았어. 전에는 충돌하지 않았어. –
또는 불행 해 ... –
C++ ('c_str()'에서 문자열 대신 char 배열을 사용하는 이유는'const char *'가 필요한 대부분의 시나리오에 충분합니다. 그렇지 않으면 복사본을 만들 수 있습니다 그리고 거기에) 그리고 이것은 이것이 왜 그렇게 좋은지 보여주는 좋은 예입니다. – Voo