대충 상황을 요약하면 다음과 같은데요
List
for( int i=0 ; i<2 ; i++ )
{
int [] intarray = new int [3];
intarray[0] = 1;
intarray[1] = 12;
intarray[2] = 123;
listofarray.Add( intarray );
Debug.Log( listofarray[0][0] );
}
Debug.Log( listofarray[0][0] );
저는 이 코드에서 로그가 세번다 1 이 찍히길 원하지만
루프 안에서는 1 이 제대로 찍히지만 마지막껀 deep copy 가 되지 않아 이상한 값, 그것도 3(!) 이 찍힙니다
(이상하게 array 의 사이즈가 찍히더라구요)
여기서 Add 할때 new int [] 같은걸 써서 deep copy 를 하고 싶은데 어떻게 하면 될까요
C++ 에서는 고급 내용에서 비슷한 것을 공부했었는데
C# 은 고급 문법을 몰라서 어떻게 해야될지 전혀 모르겠네요
아니면 처음 intarray 를 new 로 할당할때 자동으로 가비지컬렉팅되는걸 막아서 해결할 수도 있을 것 같고
어쨌든 여기서만 메모리를 할당하는 간단한 시뮬레이션 프로그램이라 메모리는 하나도 해제 안되고 막 다 누출되도 되는데
해결법 아시는분은 가르쳐주시면 감사하겠습니다!
확인 겸 따로 스크립트를 만들어서 저 문만 실행해 보셨나요? 아마 다른데서 3을 넣고 있는게 아닐까 싶은데요.