Я просматриваю код другого С++ для нашего проекта, который использует 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, вы - моя единственная надежда!