ハイパフォーマンスコンピューティング(10 ^ 5〜10 ^ 6コア)にMPIを使用するプロジェクトの誰かのC++コードを確認しています。このコードは、異なるアーキテクチャ上の(潜在的に)異なるマシン間の通信を可能にすることを目的としています。彼は次のようなコメントを書いています。
通常は
new
anddelete
を使用しますが、ここではandを使用malloc
していfree
ます。new
一部のコンパイラは、使用時にデータのパディングが異なり、異なるプラットフォーム間でのデータ転送でエラーが発生するため、これが必要です。これはでは起こりませんmalloc
。
new
これは、私が標準対malloc
質問から知っていることには適合しません。
new/deleteとmalloc/freeの違いは何ですか?コンパイラがオブジェクトのサイズを異なる方法で計算できるという考えを示唆しています(しかし、なぜそれが使用と異なるのsizeof
ですか?)。
mallocと配置の新規と新規new
の比較はかなり人気のある質問ですが、そうでない場合にコンストラクターを使用することについてのみ説明malloc
します。これはこれには関係ありません。
mallocはアライメントをどのように理解しますか?記憶はどちらかと適切に整列することが保証されている、new
またはmalloc
私が以前考えていたものであると言います。
私の推測では、彼は過去に自分のバグを誤診し、それを推測してnew
、malloc
さまざまな量のパディングを行っていたと思いますが、これはおそらく真実ではないと思います。しかし、私はグーグルや以前の質問で答えを見つけることができません。
私を助けてください、StackOverflow、あなたは私の唯一の希望です!