이 섹션에서는 C++에서 string과 char[]의 차이점이 무엇인지 알아보겠습니다. char[]는 기본적으로 문자 배열입니다. 따라서 이 배열에는 몇 가지 속성이 있습니다. 이러한 속성은 아래에 나열되어 있습니다.
-
char[]가 스택 섹션에 할당되면 항상 256바이트의 공간을 차지합니다. 텍스트 크기에 따라 달라지지 않습니다.
-
malloc() 또는 calloc()을 사용하여 힙 섹션에 공간을 동적으로 할당하면 이를 사용한 후 메모리를 해제해야 하며 항상 힙 할당 오버헤드가 있습니다.
-
문자 배열의 크기가 256자보다 크면 프로그램이 충돌할 수 있습니다. 우리 코드에서 추악한 주장 메시지를 생성할 수 있습니다.
-
문자열의 길이를 얻으려면 매번 '\0' 문자에 도달할 때까지 전체 문자 배열을 스캔해야 합니다.
반면에 C++에는 표준 네임스페이스에 문자열이 있습니다. 이 문자열은 클래스이며 내부에 문자 배열이 포함되어 있습니다. 사용자를 위해 자동으로 관리합니다. 대부분의 경우 string의 내장 배열은 16자입니다. 따라서 짧은 문자열의 경우 문자열을 조각화하지 않지만 큰 문자열의 경우 힙 섹션을 사용합니다.
C++ 문자열에는 '\0' 문자가 내장되어 있습니다. 그것은 계산하지 않고 문자열의 길이를 저장합니다. 짧은 텍스트는 힙을 차지하지 않으므로 버퍼 오버런으로부터 보호합니다. 게다가 문자열은 C++에서 사용하기 쉽습니다.