One embodiment of the present invention facilitates low-level systems
programming in dynamic, "pointer-safe" programming languages, which
disallow arbitrary references through pointers. It does so by avoiding the
creation of object instances in the traditional fashion. Rather, a large
heap is defined to store dynamically allocated data objects, and explicit
memory management operations are implemented in order to allocate and
deallocate memory from the heap. Traditional object pointers are replaced
by indices to the heap. The described technique allows the bypassing of
traditional object allocation, thus making object allocation static from
the viewpoint of the pointer-safe programming language--with the exception
of the large array that is allocated to serve as the heap. Since the new
memory system is implemented on top of an existing automatic memory
system, varying degrees of automatic and manual memory management are
possible.
Μια ενσωμάτωση της παρούσας εφεύρεσης διευκολύνει το χαμηλού επιπέδου προγραμματισμό συστημάτων σε δυναμικό, γλώσσες προγραμματισμού "δείκτης-χρηματοκιβωτίων", οι οποίες απαγορεύουν τις αυθαίρετες αναφορές μέσω των δεικτών. Κάνει έτσι με την αποφυγή της δημιουργίας των περιπτώσεων αντικειμένου στην παραδοσιακή μόδα. Μάλλον, ένας μεγάλος σωρός καθορίζεται για να αποθηκεύσει τα δυναμικά διατιθέμενα αντικείμενα στοιχείων, και οι ρητές διοικητικές διαδικασίες μνήμης εφαρμόζονται προκειμένου να διατεθεί και να απελευθερωθεί η μνήμη από το σωρό. Οι παραδοσιακοί δείκτες αντικειμένου αντικαθίστανται από τους δείκτες στο σωρό. Η περιγεγραμμένη τεχνική επιτρέπει την παράκαμψη της παραδοσιακής κατανομής αντικειμένου, καθιστώντας κατά συνέπεια την κατανομή αντικειμένου στατική από την άποψη της δείκτης-ασφαλούς γλώσσας προγραμματισμού -- με εξαίρεση τη μεγάλη σειρά που διατίθεται για να χρησιμεύσει ως ο σωρός. Δεδομένου ότι το νέο σύστημα μνήμης εφαρμόζεται πάνω από ένα υπάρχον αυτόματο σύστημα μνήμης, οι ποικίλοι βαθμοί αυτόματης και χειρωνακτικής διαχείρισης μνήμης είναι δυνατοί.