C ライブラリへのバインドがあります。
(define-cstruct _rect
([x _int]
[y _int]
[w _int]
[h _int]))
そして、このオブジェクトをプログラムで使用したいと考えています。
(require ffi/unsafe
(rename-in "sdl-structs.rkt"
[make-rect _make-rect]))
(module rect racket
(provide (all-defined-out)))
(define (make-rect x y w h)
(define new-rect (_make-rect x y w h))
new-rect)
(define (left rect)
(rect-x rect))
(define (top rect)
(rect-y rect))
...
(define (bottom-left rect)
(values (left rect) (bottom rect)))
(define (bottom-right rect)
(values (right rect) (bottom rect)))
しかし、現在メモリリークがあります。クラッシュするまでに時間がかかりますが、それでもクラッシュします。
(define (eat-memory)
(define memory (current-memory-use))
(define (eat-loop)
(begin
(make-rect 0 0 1 1)
(displayln memory)
(set! memory (current-memory-use))
(eat-loop)))
(eat-loop))
メモリを自動的に再利用したいのですが、どうすればよいですか? 私はメモリのファイナライズに関するドキュメントを見てきましたが、それがどのように役立つのかわかりません。とにかく、各関数を手動で呼び出す必要はありませんか?