我正在为我们使用 MPI 进行高性能计算(10 ^ 5-10 ^ 6核)的项目审查其他人的 C + + 代码。该代码旨在允许(潜在的)不同机器在不同的体系结构上进行通信。他写了一条评论,内容大致如下:
我们通常使用
new
和delete
,但这里我使用的是malloc
和free
。这是必要的,因为在使用new
时,一些编译器会以不同的方式填充数据,从而导致在不同平台之间传输数据时出现错误。malloc
不会发生这种情况。
这不符合我从标准 new
和 malloc
问题中了解到的任何东西。
What is the difference between new/delete and malloc/free? hints at the idea that the compiler could calculate the size of an object differently (but then why does that differ from using sizeof
?).
Malloc & place new vs new 是一个相当受欢迎的问题,但是只讨论使用构造函数的 new
,而 malloc
不使用构造函数,这与此无关。
Malloc 如何理解对齐? 表示内存保证与 new
或 malloc
正确对齐,这正是我之前所想的。
我的猜测是,他在过去的某个时候误诊了自己的错误,并推断出 new
和 malloc
给予不同数量的填充物,我认为这可能是不正确的。但我无法在谷歌或以前的任何问题中找到答案。
帮帮我,StackOverflow,你是我唯一的希望!