삭제 연산자 (Delete Operator) 사용법
delete 연산자는 구조체(Struct)를 참조 해제하는 데 사용되며, 다음과 같은 문법을 가집니다:
delete <변수>;
개념 설명
위의 문장은 구조체를 보유하고 있는 변수를 넘겨 주면 해당 구조체에 대한 참조를 제거합니다. 여기서 참조(Reference)란 구조체와 그 내용이 저장된 메모리 영역을 가리키는 값입니다.
만약 이 참조가 게임 내에서 구조체에 대한 마지막 참조라면, 가비지 수집기(Garbage Collector)가 다음 루프에서 메모리에서 구조체를 제거합니다. 일반적으로 이는 다음 단계의 시작에서 이루어집니다.
delete는 변수와 함께 사용해야 하며, 표현식(Expression)과는 사용할 수 없습니다. 기본적으로 코드 내에서 더 이상 참조되지 않는 구조체는 자동으로 가비지 수집됩니다. 하지만 메모리를 보다 효율적으로 빠르게 해제하기 위해 delete 연산자를 사용하여 명시적으로 가비지 수집기로 플래그를 설정하는 것이 좋습니다.
예제 코드
구조체 생성
이번 예제에서는 인스턴스의 생성 이벤트(Create Event)에서 구조체를 생성합니다:
mystruct = {a: 0, b: 100, c: "Hello World"};
구조체 사용 후 메모리 해제
구조체를 사용한 이후, 최종적으로 가비지 수집을 위해 다음과 같이 Clean Up 이벤트에서 플래그를 설정합니다:
delete mystruct;
활용 및 응용 예제
여기 몇 가지 활용 및 응용 예제를 추가로 제공하겠습니다.
1. 게임 내 오브젝트 관리
게임에서 여러 오브젝트를 관리하는 경우 구조체를 사용하여 정보를 저장할 수 있습니다. 사용할 때마다 delete 연산자를 통해 메모리 관리를 할 수 있습니다.
global.playerData = {name: "Player1", score: 0};
// 게임 로직
global.playerData.score += 10;
// 게임 종료 시 메모리 해제
delete global.playerData;
2. 동적 배열의 활용
동적 배열을 활용하여 여러 구조체를 저장하였다가 나중에 delete로 한꺼번에 정리할 수 있습니다.
var enemies = [];
// 적 추가
var enemy = {id: 1, health: 100};
array_push(enemies, enemy);
// 적 처치 후 메모리 해제
delete enemies[0];
array_delete(enemies, 0);
3. 리스트와 함께 사용하기
리스트를 사용하여 여러 구조체를 관리하고, 필요할 때마다 삭제하는 예제입니다.
var items = [];
// 아이템 추가
var item = {name: "Sword", damage: 10};
array_push(items, item);
// 아이템 사용 후 메모리 해제
delete items[0];
array_delete(items, 0);
이와 같은 사용 사례를 통해 delete 연산자를 효과적으로 사용할 수 있으며, 이는 메모리 관리에 매우 유용합니다.
결론
delete 연산자를 통해 게임에서 불필요한 메모리를 효율적으로 관리할 수 있습니다. 반드시 변수를 사용해야 하며, 이를 통해 가비지 수집기의 적극적인 활용이 가능합니다.