답변 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
오류의 내용은 메모리 접근 위반에 대한 내용입니다.
질문자님께서 첨부해주신 이미지를 보면 다른 함수들은 노란색으로 강조된 반면, malloc()
함수만 하얀색으로 강조되어 있네요. (코드를 쉽게 읽고 이해할 수 있도록 함수, 변수, 키워드, 주석 등의 색상을 다르게 구분하여 표시해주는 Syntax Highliting
기능)
한 번, malloc()
함수가 정의되어 있는 헤더 파일 stdlib.h
을 포함시켜 보세요. (#include <stdlib.h>
)
환경에 따라서, string.h
헤더에 해당 헤더가 포함되어 있는 경우가 있지만, 그렇지 않은 경우도 있습니다.
보다 자세한 내용은 교수님께서 설명해주신 것처럼, 이후에 '메모리 동적 할당' (강의 12.13 메모리 동적 할당) 을 배우시면서 보다 자세하게 학습하시게 됩니다.
해당 부분에서 중요한 부분은 printf(%zu %zu\n", sizeof(str5), strlen(str5));
에서, sizeof(str5)
의 출력 결과가 4
로, 정적으로 할당한 배열의 경우처럼 배열의 크기 100
이 출력되는 것이 아니라 '포인터 변수 자체의 크기' 가 출력된다는 점입니다.
이 부분이 아직 잘 이해가 되지 않으시더라도, 앞으로 조금씩 익숙해지며 학습하신다는 느낌을 가지시는 것을 추천드립니다. 교수님께서 강의를 진행하시는 동안 계속해서 강조해주시는 개념 중 하나입니다.
답변 하나하나 친절하게 해주셔서 감사합니다!