| ▲ | 0xjnml 2 days ago | |
> If you really want an arena like behavior you could allocate a byte slice and use unsafe to cast it to literally any type. Only if the type is not a pointer per se or does not contain any inner pointers. Otherwise the garbage collector will bite you hard. | ||
| ▲ | zbentley 2 days ago | parent [-] | |
Types with inner pointers add difficulty to be sure, but it’s still possible to use them with this pattern. You have to make sure of three things to do so: 1) no pointers outside of the backing memory; 2) an explicit “clear()” function that manually nulls out inner pointers in the stored object (even inner pointers to other things in the backing slice); 3) clear() is called for all such objects that were ever stored before the backing slice is dropped and before those objects are garbage collected. | ||