Copiato dallo stack overflow a causa del feedback
Quindi voglio insegnare a qualcuno come eseguire l'allocazione della memoria dinamica usando il modello del pad pad block. Ciò significa che ogni blocco di memoria è prefissato e postfisso con 4 byte che mantengono la lunghezza del blocco in byte insieme a un bit (trattenuto nel bit più a sinistra di quello che non dovrebbe mai essere usato) per indicare se il blocco è libero o assegnato.
Tutto nell'allocazione della memoria dinamica comporta la manipolazione del padding dei blocchi che tendo a considerare come nodi in una lista doppiamente collegata. Tecnicamente non è esattamente la stessa cosa, ma è sufficiente per fare un confronto abbastanza decente nella mentalità e nelle operazioni utilizzate.
Lavorerò a un progetto con un ragazzino delle scuole superiori molto più giovane con conoscenze di programmazione di base in C ++ e Java (basato su ciò che afferma, comunque). Fondamentalmente il suo insegnante conosce il suo insegnante del prossimo anno e gli stanno lasciando fare qualche tipo di programmazione durante l'estate con chiunque lo studente scelga (ho avuto l'onore di essere stato scelto).
Ad ogni modo, la soluzione che ho deciso di realizzare qualcosa in un linguaggio di programmazione piuttosto goffo (Game Maker e perché è qualcosa che possiamo fare con gamedev in) con un'interfaccia oggetto / puntatore rotta è semplicemente implementare le strutture usando un array e un'azione come se fosse lo spazio dell'heap. Quindi, stiamo implementando gli algoritmi DMA per agire sugli indici di array. Questo non è molto difficile per me e probabilmente ho un codice semipiccolo da qualche parte nei miei file che sarebbe adatto ai nostri interessi.
Tuttavia, voglio provare a dare all'altra persona la possibilità di farlo, poiché è uno dei sottosistemi cardine del programma. In modo che porti alla domanda finale:
How does one explain the concept of dynamic memory allocation and how to code the functions to do it without relying upon pointers and linked lists as concepts to make comparisons to?
Stavo pensando di creare qualche problema con le risposte e i passaggi per dimostrare le azioni dell'azionatore su un array, ma penso che potrebbe essere eccessivo considerando che dovremmo lavorare subito e non sprecare troppo tempo. Sono dei buoni modi per descrivere block padding e cose che anche un laico potrebbe capire?
Se aiuta il contesto, sono un terzo anno in informatica. Quindi, non ho alcuna esperienza nell'insegnamento.