예를 들어
string s = ""
s += "a"
s += "b"
s += "c"
이런식으로 추가하면
내부적으로 크기 늘어나야 되잖아?
그럼 그 크기 만큼 매번 늘림
아니면 일정 크기만큼 쫙 늘리고
또 필요하면 그 크기 배로 늘리고
이런식임?
전자가 메모리는 효율적으로 쓰나 매번 동적할당을 하기 떄문에 느릴거 같고
후자가 메모리는 비효율적으로 쓰나 동적할당 횟수가 줄어들어 더 빠를거 같은데
구현 코드 어디서 볼수 없나?
예를 들어
string s = ""
s += "a"
s += "b"
s += "c"
이런식으로 추가하면
내부적으로 크기 늘어나야 되잖아?
그럼 그 크기 만큼 매번 늘림
아니면 일정 크기만큼 쫙 늘리고
또 필요하면 그 크기 배로 늘리고
이런식임?
전자가 메모리는 효율적으로 쓰나 매번 동적할당을 하기 떄문에 느릴거 같고
후자가 메모리는 비효율적으로 쓰나 동적할당 횟수가 줄어들어 더 빠를거 같은데
구현 코드 어디서 볼수 없나?
미리 어느 정도 할당해놓고 꽉차면 컴파일러마다 다르지만 1.5배로 늘림
간단하게 차지하는 공간 확인할 수 있는데 아마 8의 배수로 증가했던 기억이
아님 말구!
2의제곱수를 어떻게 조합해서 적당한 크기로 만든다는것은 들었는디
딱맞게 생성하진 않음. 적당한 크기로 생성하고 값입력하다가 꽉차면 몇배늘려서 할당받고 복사한뒤 기존메모리는 반납하는형식.
그래서 만들자마자 대량의 데이터를 입력할때는 생성할때 데이터 크기를 입력해서 넉넉한 양을 할당받아야하지