单元测试,内存报错(memory access violation...)我是新手,求大神们指点!!

shawn_cd 2011-08-09 01:21:35
这是部分代码,不知错怎么改
//--------------------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();
};
...全文
638 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
至善者善之敌 2011-08-09
  • 打赏
  • 举报
回复
memory access violation原因很可能 使用了没有被创建或者已经被释放的对象

楼主在仔细看看
shawn_cd 2011-08-09
  • 打赏
  • 举报
回复
应该所Notify::unpack()函数出了错,但我不知道错在哪,内存错太麻烦了
三文鱼也会飞 2011-08-09
  • 打赏
  • 举报
回复
requestIdList.reset(new RequestIDList);
requestIdList->unpack(data);


1 感觉应该是先unpack后reset
2 new RequestIDList是栈区开辟内存,函数结束就释放了,你却没有delete
luciferisnotsatan 2011-08-09
  • 打赏
  • 举报
回复
单步调试下
bdmh 2011-08-09
  • 打赏
  • 举报
回复
调试,确定哪句出错

64,671

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧