C n'est pas le C++, mais les deux ont le même "faiblement typé" questions de. Ce n'est pas l'implicite typecasts qui cause un problème, cependant, mais la tendance à "beaucoup les jeux de mots" (à subvertir le système de type), en particulier dans la structure de données des bibliothèques.
Il y sont des ramasseurs d'ordures là-bas pour C et/ou C++. L'Boehm conservateur collecteur est probablement le mieux connu. Il est conservateur car, si elle voit un motif de bits qui ressemble à un pointeur vers un objet, il ne recueille que de l'objet. Cette valeur peut être un autre type de valeur complètement, de sorte que l'objet pourrait être collectées, mais "conservateur", c'est jouer en sécurité.
Même un conservateur collecteur peut être dupe, même si, si vous utilisez calculé pointeurs. Il y a une structure de données, par exemple, où chaque noeud de liste a un champ indiquant la différence entre les nœuds et précédent-nœud adresses. L'idée est de donner à double liste chaînée comportement avec un seul lien par nœud, au détriment de la plus complexe des itérateurs. Depuis il n'y a pas explicite pointeur n'importe où à la plupart des nœuds, ils peuvent être perçus indûment.
Bien sûr, cela est très exceptionnels cas particulier.
Plus important, vous pouvez soit fiable destructeurs ou la collecte des ordures, pas les deux. Lorsqu'un garbage cycle est recueillie, le collectionneur ne décide pas de qui destructeur d'appeler d'abord.
Depuis le RAII modèle est omniprésente en C++, et qui s'appuie sur des destructeurs, il y est IMO un conflit. Il peut y avoir des exceptions valides, mais mon avis est que si vous voulez la collecte des ordures, vous devez utiliser une langue qui est conçu à partir du sol en place pour la collecte des ordures (Java, C#, ...).