Yüksek performanslı bilgi işlem (10 ^ 5 - 10 ^ 6 çekirdek) için MPI kullanan projemiz için başka birinin C ++ kodunu gözden geçiriyorum. Kodun, farklı mimarilerdeki (potansiyel olarak) farklı makineler arasında iletişime izin vermesi amaçlanmıştır. Şu satırlar boyunca bir şeyler söyleyen bir yorum yazdı:
Normalde
new
ve kullanırdıkdelete
, ama buradamalloc
ve kullanıyorumfree
. Bu gereklidir çünkü bazı derleyicilernew
kullanıldığında verileri farklı şekilde doldurur ve bu da farklı platformlar arasında veri aktarımında hatalara yol açar. Bu ile olmazmalloc
.
Bu, standart new
ve malloc
sorulardan bildiğim hiçbir şeye uymuyor .
New / delete ve malloc / free arasındaki fark nedir? derleyicinin bir nesnenin boyutunu farklı şekilde hesaplayabileceği fikrine ipucu verir (ama o halde bu neden kullanmaktan farklıdır sizeof
?).
malloc ve yeni yerine yeniyi yerleştirme oldukça popüler bir sorudur, ancak yalnızca new
yapıcıların kullanılmadığı yerlerde kullanılması hakkında konuşur malloc
, bu da bununla alakalı değildir.
malloc hizalamayı nasıl anlar? hafızanın biriyle doğru şekilde hizalanmasının garantili olduğunu new
veya malloc
daha önce düşündüğüm şey olduğunu söylüyor.
Bence o geçmişte kendi gýcýk biraz zaman yanlış teşhis ve sonucuna varılmaktadır oluyor ki new
ve malloc
ben doğru değildir muhtemelen düşünüyorum dolgu farklı miktarlarda vermek. Ancak yanıtı Google'da veya önceki soruda bulamıyorum.
Bana yardım et, StackOverflow, tek umudum sensin!
malloc
ve arasında farklılık gösterebilir new
, çünkü new
bazı ortamlarda bir blok tahsis eder, başlangıca bazı veriler ekler ve bu veriden hemen sonra bir konuma bir işaretçi döndürür. (Veri bloğunun içinde, başkalarıyla kabul, malloc
ve new
dolgu aynı tür kullanmalıdır.)