单元测试,内存报错(memory access violation...)我是新手,求大神们指点!!
这是部分代码,不知错怎么改
//--------------------testing file
BOOST_TEST_MESSAGE("class Notify unit testing...");
{
Notify str1,str2;
std::vector<uint8_t> v1,v2;
str1.pack(v1);
std::pair<std::vector<uint8_t>*,size_t> data=std::make_pair(&v1,0);
str2.unpack(data);//这句测出的错
str2.pack(v2);
BOOST_CHECK(v1==v2);
}
//-------------------------------------------
//.cpp
void Notify::pack(std::vector<uint8_t>& buf)
{
if(requestIdList)//class RequestIDList:public ObjectContainer<std::shared_ptr<RequestParametersObject>>
requestIdList->pack(buf);
if(notificationList)
notificationList->pack(buf);
}
void Notify::unpack(std::pair<std::vector<uint8_t>*,size_t>& data)
{
auto buf = *data.first;
size_t bufSize = buf.size();
Object::Header *hdr = Object::getHdr(buf, data.second);
if(!requestIdList)
requestIdList.reset(new RequestIDList);
requestIdList->unpack(data);
if(!notificationList)
notificationList.reset(new NotificationList);
notificationList->unpack(data);
}
//-------------------------------------------
//---------------.hpp
class RequestIDList:public ObjectContainer<std::shared_ptr<RequestParametersObject>>
{
public:
RequestIDList() {};
~RequestIDList() {};
size_t length();
void pack(std::vector<uint8_t>& buf);
void unpack(std::pair<std::vector<uint8_t>*,size_t>& data);
};
struct Notify
{
public:
std::shared_ptr<RequestIDList> requestIdList;
std::shared_ptr<NotificationList> notificationList;
void pack(std::vector<uint8_t>& buf);
void unpack(std::pair<std::vector<uint8_t>*,size_t>& data);
size_t size();
Notify();
~Notify();
};