문제

좋아, 여기 내가 겪고있는 문제가있다.

렌더링 장면을위한 자체 포인터를 유지하고 관리하는 내부 렌더링 관리자가있는 렌더링 엔진에 LUA 바인딩이 있습니다. 문제는 LUA에서 그것을 사용할 때 C ++ 렌더 관리자에 추가 한 모든 단일 객체에 대한 LUA 참조를 유지하지 않으면 쓰레기가 포인터를 모으기 시작하고 물론 물건이 충돌하기 시작한다는 것입니다. 나는 내가 만든 모든 단일에 대한 모든 단일 참조를 저장하고 싶지 않습니다. Lua가 쓰레기가 특정 물건을 수집하지 않도록 강요하는 방법이 있습니까? 이 문제를 해결할 수있는 다른 방법이 있습니까?

SWIG로 LUA 바인딩을 생성하고 있습니다.

도움이 되었습니까?

해결책

Lua가 쓰레기를 수집하는 것을 방지하는 간단한 방법은 물체를 수집하는 것입니다. uncollectable) 그런 다음 그 테이블을 LUA 레지스트리에 넣습니다.

다른 옵션은 모든 LUA 객체와 함께 추가 간접 수준을 사용하는 것입니다. 즉, "Light UserData"를 사용하십시오. Light UserData는 C ++ 객체에 대한 포인터를 가리 며, Light UserData가 수집 되더라도 기본 물체는 상처를 입지 않았습니다.

이 설명은 꽤 간결하지만 도움이되기를 바랍니다. LUA의 프로그래밍, 당신은 하나를 작동 코드로 바꿀 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top