Trošku jsem se ponořil do programování své bakalářky. Píšu ji v C++. Standardní knihovny C++ obsahují některé kontejnery, ne nepodobné datovým typům z jiných programovacích jazyků. Například vector pro pole, mapa pro asociativní pole, frontu nebo zásobník.
Výhodou těchto kontejnerů je fakt, že již není nutné pracovat s ukazateli přímo do paměti a s low-level správou paměti. Nevýhodou je jejich obecnost a s tím spojená časová i prostorová náročnost.
Představte si situaci, kdy potřebujete uložit do paměti pole s více než 13000 prvky netriviálního typu (tedy žádný integer, ale nějaká složená struktura, představme si to jako pascalovský record). S použitím standardních kontejnerů v C++ mi po načtení cca 2500 prvků z disku došla fyzická paměť počítače.
Takže tudy cesta skutečně nevede. Je tedy zjevně potřeba oprášit 40 let staré koncepty práce s pamětí přesně tak, jak tomu bylo v čistém C. Tedy používání pointerů a dvojici funkcí malloc a free.
A nutno uznat, že takovýto způsob nakládání s pamětí není nijak jednoduchý. Ono přeci jen, když máte ukazatel na ukazatel na integer a k ukazateli lze bez problémů přičíst integer, lze se splést velice snadno. Ale tak co, aspoň se něco malého naučím ;-)
Žádné komentáře:
Okomentovat