我能否在 C++ 中可靠地使用 memset 和 memcpy 运算符并使用 new 分配内存?
编辑:
是的,分配原生数据类型
例子
BYTE *buffer = 0;
DWORD bufferSize = _fat.GetSectorSize();
buffer = new BYTE[bufferSize];
_fat.ReadSector(streamChain[0], buffer, bufferSize);
ULONG header = 0;
memcpy(&header, buffer, sizeof(ULONG));
最佳答案
只要您只使用 new 来分配内置和/或 POD 类型,就可以。但是,像这样:
std::string * s = new string;
memset( s, 0, sizeof(*s) );
那么你会看到灾难。
不过我不得不问,为什么您和其他人似乎如此迷恋这些函数 - 我不相信我曾经在自己的代码中使用过它们。使用具有自己的复制和赋值功能的 std::vector 似乎是 memcpy() 的更好选择,而且我从来没有真正相信将所有内容设置为零的魔法,这似乎是 memset( ).
关于c++ - memset, memcpy with new 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981568/