Я просматриваю код другого С++ для нашего проекта, который использует MPI для высокопроизводительных вычислений (10 ^ 5 - 10 ^ 6 ядер). Код предназначен для обеспечения связи между (потенциально) разными машинами на разных архитектурах. Он написал комментарий, в котором говорится что-то вроде:
Обычно мы будем использовать
new
иdelete
, но здесь я используюmalloc
иfree
. Это необходимо, потому что некоторые компиляторы будут обрабатывать данные по-разному, когда используетсяnew
, что приводит к ошибкам в передаче данных между различными платформами. Это не происходит сmalloc
.
Это не соответствует ничему, что я знаю из стандартных вопросов new
vs malloc
.
В чем разница между новым/удаленным и malloc/free? намекает на мысль о том, что компилятор может вычислять размер объекта по-разному (но тогда почему которые отличаются от использования sizeof
?).
malloc и размещение new vs. new являются довольно популярным вопросом, но говорят только о new
с использованием конструкторов, где malloc
нет, а это не относящихся к этому.
как malloc понимает выравнивание? говорит, что память гарантированно правильно выровнена с помощью new
или malloc
, что я и думал раньше.
Я предполагаю, что он неправильно определил свою ошибку в прошлом и вывел, что new
и malloc
дают разные количества отступов, которые, я думаю, вероятно, неверны. Но я не могу найти ответ с Google или в любом предыдущем вопросе.
Помогите мне, StackOverflow, вы - моя единственная надежда!