And*_*res 2 c++ memory-management
我可以在C++中可靠地使用memset和memcpy运算符,并且内存分配了新的吗?
编辑:
是的,分配本机数据类型
例
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));
Run Code Online (Sandbox Code Playgroud)
小智 5
只要你只使用new来分配内置和/或POD类型,那么是的.但是,有这样的事情:
std::string * s = new string;
memset( s, 0, sizeof(*s) );
Run Code Online (Sandbox Code Playgroud)
然后你会看到灾难.
我不得不问,为什么你和其他人似乎很迷恋这些功能 - 我不相信我曾经在我自己的代码中使用它们.使用std :: vector,它有自己的副本和赋值工具似乎是memcpy()更好的选择,我从来没有真正相信将一切设置为零的魔力,这似乎是memset的主要用途( ).