Practical Ada Memory Management Strategies for Real-Time Systems
If an embedded-systems programmer uses Ada long enough, he or she will undoubtably need to represent a variable-sized data structure, possibly at an address determined at runtime. Links between such structures may also be necessary, and the programmer may finally break down and attempt to use pointers.
Many embedded-systems programmers who use Ada have very little experience with pointers (access types) in Ada. This is largely because the performance of most real time embedded systems cannot tolerate the overhead of the memory management afforded by the usually-provided Ada runtime. This system is generally non-deterministic due to garbage collection considerations, and can be wasteful of both memory and clock cycles. However, the LRM clearly states that an access object (pointer) can only be assigned the result of the NEW allocator, the contents of another access object of the same type, or the NULL constant. Therefore, software engineers often give up on the standard Ada runtime and resort to simple compile-time allocated arrays.
ESC_1992_Vol2_Page23_Johnson_Practical Ada Memory Management Strategies for Real-Time Systems.pdf