저는 cpp의 기본적인 것들을 가지고 놀고 있습니다. 저는이 언어로 새로운 사람입니다. 그래서 제 질문이 올바르게 공식화되지 않았다고 경고합니다. 어떤 도움을 주셔서 감사합니다.이 코드는 할당 된 범위 바깥에 문자를 추가하는 것 같습니다
#include <stdio.h>
int main (void) {
char *str;
str = (char*) malloc(2);
str[0] ='8';
str[1] ='8';
str[2] ='6';
str[3] ='\0';
printf ("%s\n",str);
}
그리고 컴파일 :
gcc -O0 -pedantic -Wall test2.cpp
(GCC 버전 4.7.2)
문제는 이후 내 코드와 자신을 발견 www.cplusplus.com/reference/cstdlib/malloc/의 예를 본 것입니다
오류가없고 출력이 886입니다. 왜 오류가 발생하지 않습니까? 할당 된 공간의 경계를 지키지 않았습니까?
오류가 발생하지 않았으므로 출력이 886입니다. 오류가없는 이유는 무엇입니까? 할당 된 공간의 경계를 지키지 않았습니까?
코드가 정상인 경우 ... 참조 용 예제가 왜 필요합니까? 다른 (더 가능성이 높은) 경우 ... 위험은 무엇입니까?
감사합니다.
괜찮은 정적 분석 도구 (예 : cppcheck)를 사용하면 (필자도 Eclipse CDT C++ SA 파서가한다고 생각합니다.) 알려 주어야합니다. –
감사합니다. C++에서 아주 멀었습니까? 주요 차이점은 무엇입니까? 초보자가 어떻게 다른 것을 구별 할 수 있습니까? (포트란에서 나는 각 버전에서 sintax가 무엇인지 알기 위해 수년이 걸린다) – alexis
가장 쉬운 단서는'malloc'과'printf'를 사용하는 것이다. 대부분의 C++ 코드는'new'와'cout'을 사용합니다. –