On 19.08.2013 12:16, Mikael wrote:
So in your past test with a pointered type, you did see the proper behavior. And here comes what applies to the current test:
In the case of the |struct|, |union| and |type| types, the default function reclaims the copy on the C heap referenced by the internal pointer (when using a C++ compiler this is done using ‘delete (type*)internal-pointer’, which calls the destructor of type if it is a class) and returns ‘___FIX(___NO_ERR)’.
Can you paste your full test code here?
Of course :)
;; struct definition (c-declare "struct test { int a; int b; };")
(c-define-type struct-test (struct "test"))
(define struct-test (c-lambda () struct-test "___result_voidstar = new test;"))
;; test code (load "test")
(define (alloc-struct n) (let loop ((i 0)) (if (< i n) (let ((a (struct-test))) (loop (+ i 1)) (write "FIN")))))
(alloc-struct 100000000000)