僕の意見では、1964年末にIBMのPL/Iプログラミング言語によって導入された「手動」のメモリ管理は、Cや他の言語に受け継がれたもので、プログラマーが「free」を呼び出す責任を持つっていうのは、深刻な間違いだったと思う。導入された時点で既に時代遅れの技術だったんだ。明示的な「free」が発明されたときには、自動メモリ再利用の方法が1960年から4年間知られていて、別のIBMの社員が参照カウントを発明したんだ(LISP Iのガーベジコレクターに反応して)。単純に実装すると参照カウントにはいくつかの欠点があるけど、最適化された実装ではそれを比較的簡単に回避できる。親の記事で話題にされている本にも、参照カウントについての章があるよ。僕は何十年もCプログラムを書いてきたけど、直接「free」を呼び出したことは一度もない。常に参照カウントを使ってきたからね。直接「free」を呼び出したいと思ったこともない。Cは、コンパイラが仮想関数の呼び出しや参照カウントの処理などを暗黙的に行わないという欠点があるけど、高レベル言語が提供するような技術は、Cのような言語でも使えるよ、たとえそれがもっとボイラープレートコードを必要としたとしてもね。「shared_ptr」の参照カウントの実装は好きじゃないな。あのデータ型は、普通の参照やポインタが期待される場所では直接使えないから。そういう問題がない実装も存在するよ。