public static int[] add_One(int[] array)
{
int carry = 1;
int[] newArray = new int[array.Length];
for (int i = array.Length - 1; i >= 0; i--)
{
int result = array[i] + carry;
carry = 0;
if (result % 10 == 0)
{
carry = 1;
newArray[i]= 0;
}
else
{
newArray[i] = result;
}
}
if (carry == 1)
{
newArray = new int[array.Length+1];
newArray[0] = 1;
}
return newArray;
}
저거 코드 보면 처음 시작할때 newArray 사이즈가 정의됬는데 마지막 if 에서 newArray 사이즈를 하나 늘리는데 저게 가능함?????
뭐 씨샵도 메모리 자동관리해주는 놈중 하나인데 가능할수고 있지 않을까
머여 저래도 되는겨? c#안해봤는데 신기하네
뭐가 그렇게 신기해? 저건 그냥 "새 배열 만들어서 넘겨주는 거잖아". 그냥 이전 배열 버리는거야. C#이니까 그거 알아서 GC로 지우겠지 하고 이전배열 따로 지우는 작업을 안하는거 뿐이고.
진짜 신기하다거나 좀 특이하다고 느낄건 capacity 개념임. 예를들어 배열이나 리스트를 길이 10짜리를 만들면, 처음부터 20짜리 공간을 비워둠. 이걸 Array.resize나 대충 그런종류 명령 실행하면, 빠르게 미리 할당해둔 공간을 더 덧붙여서 넘겨주는 방식이지. 여기서 20이 capacity에 해당되지. 그래서 배열로 메모리 사용량 측정할때는 개념 잘 생각해봐야됨. 다른 언어보다 2배는 더 써먹으니, 실제 가능한 양이 다른 언어에 비해 절반이하로 줄어들 수 있음.