ds_list_destroy 함수 설명
ds_list_destroy
함수는 주어진 리스트 데이터 구조를 메모리에서 제거하여 사용 중인 리소스를 해제하고, 그 안에 포함된 모든 값을 삭제합니다. 이 함수는 DS 리스트 사용이 끝났을 때 항상 호출해야 하며, 메모리 누수를 방지하여 게임이 느려지거나 충돌하는 것을 막을 수 있습니다.
리스트를 파괴하면 그 안에 저장된 데이터 구조의 참조가 해제되어 메모리 누수가 발생할 수 있으므로, 리스트를 파괴하기 전에 리스트 안의 모든 데이터 구조 항목을 수동으로 삭제해야 합니다. 유일하게 이 작업이 필요하지 않은 경우는 리스트의 항목이 다른 DS 리스트나 DS 맵으로 플래그가 설정된 경우로, 이 경우 해당 항목들은 자동으로 삭제되고 메모리가 정리됩니다.
문법
ds_list_destroy(id);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
id | DS 리스트 | 제거할 데이터 구조의 핸들 |
반환값
N/A
예제
if (lives == 0) {
ds_list_destroy(AI_list);
AI_list = -1;
room_goto(rm_Menu);
}
위의 코드는 내장된 전역 변수 lives
의 값을 확인하고, 값이 0일 경우 AI_list
변수에 인덱스된 DS 리스트를 파괴한 후 방을 변경합니다.
활용 예제
예제 1: 게임 오버 시 리스트 파괴
if (game_over) {
ds_list_destroy(player_items);
player_items = -1;
}
예제 2: 레벨 클리어 시 리스트 정리
if (level_cleared) {
ds_list_destroy(enemy_list);
enemy_list = -1;
}
예제 3: 특정 조건에서 리스트 파괴
if (score >= target_score) {
ds_list_destroy(achievements);
achievements = -1;
}
예제 4: 게임 종료 시 모든 리스트 정리
ds_list_destroy(all_players);
ds_list_destroy(all_enemies);
ds_list_destroy(game_events);
예제 5: 리스트 사용 후 메모리 관리
// 리스트 사용 코드
// ...
// 리스트 파괴
ds_list_destroy(temp_list);
temp_list = -1;
이와 같이 ds_list_destroy
함수를 활용하여 메모리 관리를 철저히 하여 게임의 성능을 유지할 수 있습니다.