모노디벨롭에서 unsafe 모드 실행하기
이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
서론
C#의 2차원 배열의 메모리 구조를 확인하기 위해 변수의 주소값을 찍어보려다
1. 예제코드2. 유니티에서 unsafe 코드를 사용하는 방법3. C#의 메모리 구조
예제코드
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Text;
public class NewBehaviourScript : MonoBehaviour {
void Start () {
int i, j;
// 4행 2열의 배열 선
int[,] array = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// 안전하지 않은 포인터를 사용하기 위한 코드
unsafe {
for (i = 0; i < 4; i++) {
for (j = 0; j < 2; j++) {
// 가비지 콜렉터가 변수를 이동시키지 못하게 함
fixed(int *a =&array[i, j]) {
Debug.Log ((int)a);
}
}
}
}
}
}
유니티에서 unsafe 코드를 사용하는 방법
ㄴ. Asset내에 rsp 파일 생성
1. Api Compatibility Level을 to .NET 2.0 Subset 로 바꿉니다.
2. 프로젝트 경로/Asset에 smcs.rsp 파일을 만듭니다. 그리고 유니티와 모노디벨롭을 재 시작해줍니다.