Saya meninjau kode C ++ orang lain untuk proyek kami yang menggunakan MPI untuk komputasi kinerja tinggi (10 ^ 5 - 10 ^ 6 core). Kode ini dimaksudkan untuk memungkinkan komunikasi antara (berpotensi) mesin yang berbeda pada arsitektur yang berbeda. Dia menulis komentar yang mengatakan sesuatu di sepanjang baris:
Kami biasanya menggunakan
newdandelete, tapi di sini saya menggunakanmallocdanfree. Hal ini diperlukan karena beberapa kompiler akan memasukkan data secara berbeda saatnewdigunakan, yang menyebabkan kesalahan dalam mentransfer data antara platform yang berbeda. Ini tidak terjadi denganmalloc.
Ini tidak sesuai dengan apa pun yang saya ketahui dari pertanyaan standar newvs.malloc
Apa perbedaan antara new / delete dan malloc / free? mengisyaratkan gagasan bahwa kompilator dapat menghitung ukuran suatu objek secara berbeda (tetapi mengapa hal itu berbeda dengan menggunakan sizeof?).
malloc & penempatan baru vs. baru adalah pertanyaan yang cukup populer tetapi hanya berbicara tentang newmenggunakan konstruktor di mana malloctidak, yang tidak relevan dengan ini.
bagaimana malloc memahami keselarasan? mengatakan bahwa memori dijamin selaras dengan baik newatau mallocyang saya pikirkan sebelumnya.
Dugaan saya adalah bahwa dia salah mendiagnosis bugnya sendiri di masa lalu dan menyimpulkannya newdan mallocmemberikan jumlah padding yang berbeda, yang menurut saya mungkin tidak benar. Tetapi saya tidak dapat menemukan jawabannya dengan Google atau dalam pertanyaan sebelumnya.
Bantu saya, StackOverflow, Anda satu-satunya harapan saya!
mallocdan new, karena newdi beberapa lingkungan mengalokasikan blok, menambahkan beberapa data ke awal dan mengembalikan penunjuk ke lokasi tepat setelah data ini. (Saya setuju dengan yang lain, di dalam blok data, mallocdan newharus menggunakan jenis bantalan yang sama.)