这是在new company里记录的第一篇blog.这个问题足足让费了2个小时去调试,代价太大!
//
问题描述:
class CAddressData
{
std::string strName;
std::vector<MyType> vType;
};
定义一个结构体,有个vector成员变量,我们通过其他cpp调用GetData()接口,也就是返回CAddressData的变量时,对其变量中的vector容器遍历操作时就容易出错。
///
个人原因:
我在定义CAddressData变量时,调用了memset(&m_addressData,0,sizeof(CAddressData));就是因为这句,导致了程序崩溃!!!
//
解析:
总结:结构体里面有vector等成员时,不要用memset清零(从库的跟踪中我发现向量是使用名称为“_Myproxy”、“_Mynextiter”这两个指针来寻找与之相邻的值的,在我们定义一个向量时,它便初始化一个“_Myproxy”,而我的代码却在类的构造函数中对定义的结构体执行了一个清零的操作)