【发布时间】:2013-08-10 19:12:30
【问题描述】:
我在 C++ 中遇到了 new() 运算符的这个示例实现:
void *operator new(size_t size){
if(void *mem = malloc(size)){
cout << "allocated memory" << endl;
return mem;
}
else{
throw bad_alloc();
}
}
如何编辑这个函数,以便在特定的“字节边界”上分配内存(我指的是性能圈中讨论的数据对齐)?
(我假设这不仅仅是由编译器自动完成的——或者如果是的话,手动实现它有什么好处吗?)
【问题讨论】:
-
使用
posix_memalign代替malloc? -
不是重复的,而是this probably answers the question(链接的问题询问特定算法的工作原理,而不是一般的操作方法解决方案)。
-
malloc的结果将针对任何对象类型进行适当对齐,因此您只需担心有特殊对齐需求,例如对齐缓存或页面边界。
标签: c++ performance optimization alignment