Ngoài câu trả lời của Tim, bạn cũng có thể sử dụng ánh sáng userdata. Bạn không kết thúc với một bản sao của dữ liệu của bạn trong ngăn xếp Lua, tất cả các bạn đẩy vào Lua là một con trỏ.
Lua không hiểu gì trong con trỏ này, cho dù nó vẫn trỏ tới bộ nhớ hợp lệ hay cách truy cập bất kỳ đối tượng nào trong con trỏ này, vì vậy bạn sẽ phải tự mình xử lý tất cả điều này trong C. gửi một con trỏ tới một mục trên danh sách, vì vậy nếu có bất kỳ rủi ro nào mà mục nhập đã bị xóa khỏi danh sách, trước tiên tôi lặp lại danh sách để xác nhận con trỏ (không phải là một vấn đề lớn nếu danh sách của bạn ngắn). Để truy cập các mục trong con trỏ trong Lua, bạn cần viết các hàm get/set trong C mà bạn có thể gọi từ Lua.
Để bắt đầu, đây là những mục trên đẩy và lấy các lightuserdata:
Ồ, wow. Tôi không biết về điều này. Điều này chắc chắn là con đường để đi nếu bạn đang sử dụng luajit. –