我正在审查其他人使用MPI进行高性能计算(10 ^ 5 - 10 ^ 6核心)的项目的C++代码.该代码旨在允许不同体系结构上(可能)不同机器之间的通信.他写了一条评论,说的是:
我们通常使用
new和delete,但在这里我正在使用malloc和free.这是必要的,因为一些编译器在new使用时将以不同方式填充数据,从而导致在不同平台之间传输数据时出错.这不会发生malloc.
这与我从标准newvs malloc问题中所知道的任何内容都不符合.
new/delete和malloc/free有什么区别?提示编译器可以不同地计算对象的大小(但那么为什么它与使用不同sizeof?).
malloc&placement new vs. new是一个相当受欢迎的问题,但只讨论new使用构造函数而malloc不是,这与此无关.
malloc如何理解对齐?他说保证记忆与任何一个new或者malloc我之前想过的一致.
我的猜测是,他在过去的某个时间误诊了自己的错误并推断出new并malloc提供不同数量的填充,我认为这可能不是真的.但我无法通过谷歌或以前的任何问题找到答案.
帮助我,StackOverflow,你是我唯一的希望!