私はプログラミングをしています:Bjarne StroustrupがC++を使って原則と実践をしています。私は27章で魚が遭遇しました。これは、コード行です:プログラミング原則と練習の章27不注意なリストの間違い?
struct List* lst = (List*)malloc(sizeof(struct List*));
は、私の質問は、このように記述するべきではありませんされています。私は最初のバージョンでプログラムをコンパイルするとき
struct List* lst = (List*)malloc(sizeof(struct List));
、それが正常に動作しますが、私は持っています見たmallocは2番目のバージョンとして使われています。
私の質問は正しいですが、違いは何ですか?
PS:本書はC++について書かれていますが、この章ではCで書く方法を提示しようとしています。実際これはCプログラムです。
慣用的なC++が動作する限りどちらも正しいわけではありません。 mallocはコンストラクタを呼び出さないので、 – StoryTeller
C++の発明者が(基本的に)CコードとCコードを書くことは間違いかもしれません。たぶん彼は、Cに関する悪い事例を示し、それをC++で書くべき方法と対照するためのプログラムを書いたのでしょうか?文章がなく、何かを意味するコードが2行しかないので、本を持っていないか、すぐに利用できないということはわかりにくいです。 –
@Someprogrammerdudeはこの場合ではありません。最初のものは間違っていますか?私はあまりにも明白な何かをここで欠いていますか –