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
newve kullanırdıkdelete, ama buradamallocve kullanıyorumfree. Bu gereklidir çünkü bazı derleyicilernewkullanı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 newve mallocsorulardan 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 newyapı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 newveya mallocdaha ö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 newve mallocben 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!
mallocve arasında farklılık gösterebilir new, çünkü newbazı 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, mallocve newdolgu aynı tür kullanmalıdır.)