为了刷新我生锈的C ++知识,我开始编写一个与旧版win32 API接口的跨平台库。偶尔,我需要动态分配内存块并将它们转换为FAM(灵活数组成员)结构。在尝试遵循建议的C ++实践时,我选择使用全局::operator new
和::operator delete
。
我能够找到运营商的示例用法;但是以这种方式分配的零初始化内存的推荐(和可移植)方法是什么?
根据对SO中其他帖子的观察:
std::calloc()
& std::memset()
只应与相关的函数系列一起使用(std::malloc()
,std::realloc()
等)ZeroMemory()
是特定于平台的std::fill()
& std::fill_n()
用于数组和容器;我不记得曾经看到它们用于void*
指向的内存块;也许这是有原因的。 我才开始使用全球operator new
& operator delete
,所以我对它们如何工作以及何时应该使用的基本假设也可能不完整。