qopwer4345   3년 전

아래의 코드를 실행하면

length = 0

capacity = 16 ,   으로 초기화가 되었고

6개의 값을 배정한 뒤

length = 21

capacity = 32 ,  로 변경이 되었는데

값이 어떤방식으로 저장이 된건지 궁금합니다.

또 StringBuilder에 값을 저장하다가 어느정도 양이 쌓이면 방출하는 방식을 사용하고 싶은데 어떻게 해야할지 궁금합니다..

게시판을 한두시간 찾아보고 구글링도 해봤지만 이러한 방법에 대해 논의를 하는 곳을 찾지 못했습니다..

qopwer4345   3년 전

아래에 일부 소스코드를 추가해보았습니다

먼저 기존의 값들을 초기화시킨후 AppendLine이 아닌 Append로 받아들이자 아래와 같은 값들이 나오게 되었는데 

Length는 한줄에 들어있는 문자열길이이며 capacity는 그 줄에 들어갈수 있는 최대 문자열길이로 이해하면 될까요?

그렇다면 AppendLine의 경우 어째서 Length가 21이 되는지 궁금합니다

preview

Green55   3년 전

동적인 배열의 저장 공간을 확보하는 방법으로, 저장 공간이 부족할 때 마다 현재 저장 공간의 2배로 추가 할당하는 방법을 흔히 사용합니다.

StringBuilder에 대해서는 아는 바가 없지만 아마 이런 맥락일 가능성이 커보입니다

https://en.wikipedia.org/wiki/Dynamic_array#Geometric_expansion_and_amortized_cost

댓글을 작성하려면 로그인해야 합니다.