带有string成员的结构体进行memset引发的问题

结构体如下:

struct StruTest
{
	string strSrcId;		
	string strDestId;		
	HPR_INT32 iCount;
	StruTest()
	{
		memset(this, 0, sizeof(StruTest));
		iCount= -1;
	}
};

引发问题:

StruTest struTest;
struTest.strSrcId=""; 		//core掉
struTest.strSrcId="123"; 	//不会core掉

解析:

memset初始化std::string对象时,按字节顺序将std::string对象所在空间清零,破坏了std::string对象的成员结构,使Myroxy指针资源变为野指针,操作其迭代器会出现不可预知的异常,在存储字符串时可能分配了不必要的内存空间,并且还导致这些内存不能被释放。

你可能感兴趣的:(遇到的问题)