Одна вещь, не упомянутая до сих пор, это производительность и почему вы хотите вручную управлять памятью.
Точно управлять памятью сложно, особенно когда программа становится более сложной (особенно когда вы используете потоки и когда время жизни фрагментов памяти становится сложным (то есть, когда становится трудно, когда трудно точно сказать, когда вам не нужен фрагмент) информации)) даже с мощными современными инструментами программирования, такими как valgrind.
Итак, почему вы хотите вручную управлять памятью, по нескольким причинам:
- Чтобы понять, как это работает /
- Для реализации сборки мусора / автоматического управления памятью нужно вручную
- С некоторыми вещами более низкого уровня, такими как ядро, вам нужна гибкость, которую может дать ручное управление памятью.
- Самое главное, если вы сделаете правильное ручное управление памятью, вы можете получить большое ускорение / меньшие накладные расходы памяти (лучшую производительность), связанную проблему со сборкой мусора (хотя она становится лучше, когда пишутся лучшие сборщики мусора, такие как hotspot jvm one) в том, что вы не можете контролировать управление памятью, поэтому сложно делать что-то с вещами в реальном времени (гарантируя сроки для определенных задач, таких как автомобильные тормоза и кардиостимуляторы, попробуйте специальный gc в реальном времени), и программы, которые взаимодействуют с пользователями, могут немного зависнуть или отставание (это будет отстой для игры).
Многие "Современные C ++" (как уже говорилось, C ++ можно рассматривать как несколько языков в зависимости от того, как вы их используете), в отличие от c с классами (или функцией x и y C ++), часто используют компромисс использование простого необязательного gc / автоматического управления памятью (обратите внимание, что необязательный gc может хуже работать с управлением памятью, чем обязательный, потому что, когда он обязателен, это более простая система), а также и некоторое ручное управление памятью. В зависимости от того, как вы это делаете, он может иметь некоторые преимущества и недостатки использования gc и ручного управления памятью. Дополнительный GC также доступен с некоторыми библиотеками C, но он реже встречается с c, чем c ++.