|
|
|
|
|
by ridiculous_fish
4047 days ago
|
|
The Classic Mac OS API (the "toolbox") had a compacting manual memory management scheme. Instead of raw pointers like what malloc might return, you worked with double-pointers called Handles (different from Win32 Handles), which indirected through a global Handle table. System calls may compact or rearrange the blocks of memory referenced by Handles. If you wanted to dereference the Handle across a system call, you had to HLock it to keep it from being moved, similar to object pinning in C#. In modern OSes, virtual memory plays an analogous role. We still have a double indirection, but it goes through the TLB and page table. |
|