Il n'est pas tout à fait clair si vous parlez de la philosophie de ce qui est intégré dans C++, ou de la façon de l'utiliser de manière à éviter les fuites de mémoire.
La principale façon de prévenir les fuites de mémoire (et autres fuites de ressources) est connue sous le nom de RAII (Resource Acquisition Is Initialization) ou SBRM (Scope Bound Resource Management). Dans les deux cas, l'idée de base est assez simple : comme les objets avec une durée de stockage auto
sont automatiquement détruits à la sortie de leur portée, vous allouez de la mémoire dans le constructeur d'un tel objet, et libérez la mémoire dans son destructeur.
En ce qui concerne C++ lui-même, il n'a pas vraiment de philosophie. Il fournit des mécanismes, mais laisse au programmeur le soin de décider quel mécanisme est approprié pour la situation en question. C'est souvent le RAII. Parfois, cela peut être un collecteur de déchets. D'autres fois, cela peut être différents types de gestionnaires de mémoire personnalisés. Bien sûr, parfois, il s'agit d'une combinaison de deux ou des trois, ou quelque chose de totalement différent.
Édition : Quant à pourquoi C++ fait les choses de cette manière, c'est assez simple : presque tout autre choix rendrait le langage inadapté à au moins certains types de problèmes, y compris un certain nombre pour lesquels il était clairement destiné à convenir. L'un des plus évidents était la capacité de fonctionner sur une machine "nue" avec un minimum de structure de support (par exemple, pas de système d'exploitation)