인프런 커뮤니티 질문&답변

I M님의 프로필 이미지
I M

작성한 질문수

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

포인터 문자열 할당시 +1해주는 이유

작성

·

468

0

안녕하십니까

section2의 포인터와 배열/문자열 강의의 예시 중

ps = new char[strlen(animal)+1];

부분에서 +1을 해주는 이유가 무엇인가요?

null값과 관련되었다고 예상되는데 만약 그렇다면

null값이 필요한 string과 달리 char형은 '\n'과 같은 null값이 없어도 된다고 알고 있습니다.

1byte더 큰 크기 할당이 왜 필요한가요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

주어진 문자열의 끝을 나타내는 null 문자를 추가적으로 할당하는 것은 C언어에서 문자열의 끝을 구분하기 위해 필요합니다. null 문자는 문자열의 끝을 알리는 역할을 하며, 문자열 뒤에 따라붙입니다. 문자열에 null 문자를 포함시키지 않는다면, 문자열을 다루는 함수들이 문자열의 끝을 인식하지 못해 오류가 발생할 수 있습니다.

또한, ps = new char[strlen(animal)+1];에서 할당하는 크기는 문자열의 길이에 null 문자를 추가한 크기입니다. 문자열의 길이만큼 메모리를 할당하게 되면, 문자열의 끝에 null 문자를 추가했을 때 문자열의 크기가 변경되어 오류가 발생할 수 있습니다. 따라서 문자열의 길이보다 null 문자까지 할당하기 위해서는 문자열 길이에 +1을 해주어야 합니다.

null 문자가 필요없는 char형 변수에는 +1을 하지 않아도 됩니다. 하지만 문자열에는 반드시 null 문자가 필요하며, 그러한 이유로 문자열의 길이보다 +1만큼 더 메모리를 할당하는 것입니다.

여러분이 이해하실 수 있도록 설명해 드렸는데, 더 궁금한 점이나 다른 질문이 있다면 언제든지 물어보세요. 감사합니다!

I M님의 프로필 이미지
I M

작성한 질문수

질문하기