Je suis en train de réviser le code C++ de quelqu'un d'autre pour notre projet qui utilise MPI pour le calcul haute performance (10^5 - 10^6 cœurs). Le code est destiné à permettre les communications entre (potentiellement) différentes machines sur différentes architectures. Il a écrit un commentaire qui dit quelque chose du genre :
Nous utiliserions normalement
new
ydelete
mais ici j'utilisemalloc
yfree
. Ceci est nécessaire parce que certains compilateurs remplissent les données différemment lorsquenew
est utilisé, ce qui entraîne des erreurs lors du transfert de données entre différentes plateformes. Cela ne se produit pas avecmalloc
.
Cela ne correspond à rien de ce que je connais des standards. new
vs malloc
questions.
Quelle est la différence entre new/delete et malloc/free ? suggère l'idée que le compilateur pourrait calculer la taille d'un objet différemment (mais alors pourquoi cela diffère-t-il de l'utilisation de l'option sizeof
?).
malloc & placement nouveau vs. nouveau est une question assez populaire mais qui ne parle que de new
en utilisant des constructeurs où malloc
ne le fait pas, ce qui n'est pas pertinent dans ce cas.
comment malloc comprend-il l'alignement ? dit que la mémoire est garantie d'être correctement alignée avec soit new
o malloc
ce qui est ce que j'avais pensé auparavant.
Je pense qu'il a mal diagnostiqué son propre problème dans le passé et qu'il en a déduit que new
y malloc
donnent des quantités différentes de rembourrage, ce qui, à mon avis, n'est probablement pas vrai. Mais je n'arrive pas à trouver la réponse avec Google ou dans une question précédente.
Aide-moi, StackOverflow, tu es mon seul espoir !