|
> Doesn't that effectively amount to manual memory management? Not really, example in Active Oberon: TYPE
point = RECORD x, y : INTEGER; END;
VAR
staticPoint : point; (* On the stack or global *)
gcPoint : POINTER TO point; (* GC pointer *)
noGCPoint : POINTER(UNTRACED) TO point; (* pointer not traced by the GC *)
> What particular languages are you referring to?Mesa/Cedar, Oberon, Oberon-2, Active Oberon, Component Pascal, Modula-2+, Modula-3, D, Oberon-07, Eiffel, BETA. There are probably a few other ones. |
That's fine for one point. How about N points where N varies at runtime?
If I allocate memory dynamically outside the GC's remit, I'm going to have to release that memory somehow.