我试图构建一个非常简约的内存读取库来读取一些unsigned int
s。ReadUnsignedInt
但是,当方法想要返回时,我遇到了“HEAP CORRUPTION DETECTED”错误消息。
检测到堆损坏。CRT 检测到应用程序在缓冲区结束后写入内存。
正如我所读到的,这可能是尝试双重删除某些内容的原因。这可能是由于一些不正确的使用引起的,std::tr1::shared_ptr
但我无法确定我对它们做错了什么。代码如下(省略错误处理):
unsigned int Memory::ReadUnsignedInt (unsigned int address) const {
std::tr1::shared_ptr<byte> bytes =
this->ReadBytes(address, sizeof(unsigned int));
return *((int*)bytes.get());
// correct value (how to improve this ugly piece of code?)
}
std::tr1::shared_ptr<byte> Memory::ReadBytes (
unsigned int address, int numberOfBytes) const
{
std::tr1::shared_ptr<byte> pBuffer(new byte(numberOfBytes));
ReadProcessMemory(m_hProcess.get(), (LPCVOID)address,
pBuffer.get(), numberOfBytes * sizeof(byte), NULL))
return pBuffer;
}