https://www.lua.org/manual/5.3/manual.html
기본 원리는 지난글에서 설명했다.
그럼 이번엔 실제 API를 좀 읽어보도록 하자
레퍼런스 오른쪽엔 다음과같은표시가 있다. 각 필드는 팝, 푸쉬, 에러 여부다
lua_pop은 위와 같은 표시가 붙어있는데, n개를 스택에서 팝하는 함수라서 그렇다. 반대로 +0이라 푸쉬는 아예없다.
lua_tonumber을 보자.
이번엔 푸쉬도 팝도 없다.
즉, 단순 tonumber같은거로 값을 가져온다고 값이 사라지진 않는것이다
지난글에선 그림에서 잘못표시했었다
걍 tonumber하면 여전히 스택에 함수 반환값등으로 생긴 값이 남아있으니까,
팝을 적절히 잘 해주도록하자.
말그대로 top을 가져온다. 정확히는 top의 인덱스를 가져오기 때문에, 사실상 현재 스택에 든 원소의 개수라고 보면 된다.
lua_getglobal과 lua_setglobal은 각각 push, pop이 한개 있다. 주의하자
둘다 에러를 발생시키기 때문에 이걸 핸들링할수있다.
이렇게 스택 푸쉬 팝이 얼마나 되는지가 정말 중요한게,
이 함수를 호출했으니 원소가 빠졌겠지 했는데 안빠져서 프로그램이 터질수가 있다
주의하자...
'프로그래밍' 카테고리의 다른 글
[Lua] Lua랑 C/C++ 사이 통신하는 방법 (0) | 2022.02.12 |
---|---|
게임 개발시 최적화 관련 토막글 (0) | 2020.11.16 |
[node.js] net 이벤트 정리 (0) | 2020.07.06 |
4. Exception을 지양하는 이유가 뭘까? (1) | 2020.05.20 |
3. C와 Call by Reference (0) | 2020.04.09 |