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
new
dandelete
, tapi di sini saya menggunakanmalloc
danfree
. Hal ini diperlukan karena beberapa kompiler akan memasukkan data secara berbeda saatnew
digunakan, 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 new
vs.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 new
menggunakan konstruktor di mana malloc
tidak, yang tidak relevan dengan ini.
bagaimana malloc memahami keselarasan? mengatakan bahwa memori dijamin selaras dengan baik new
atau malloc
yang saya pikirkan sebelumnya.
Dugaan saya adalah bahwa dia salah mendiagnosis bugnya sendiri di masa lalu dan menyimpulkannya new
dan malloc
memberikan 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!
malloc
dan new
, karena new
di 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, malloc
dan new
harus menggunakan jenis bantalan yang sama.)