gpt4 book ai didi

omnet++ - 使用 vein 和 omnet++ 的自定义模块

转载 作者:行者123 更新时间:2023-12-05 07:24:24 26 4
gpt4 key购买 nike

我已经安装了 veins 4.7,并且完成了教程。一切正常。现在我构建了一个更像 DemoBaseApplLayer 的新模块。该模块继承自 BaseAppLayer。在初始化方法中,我调用了一个 dispatchMsg 函数。看起来像下面这样:

根据几个答案,我在析构函数和完成方法中引入了 cancelAndDelete(msg) 。我还添加了 delete(msg) 方法但没有用

dispatchMsg() {

//SignedBSMMessage sgndBSMMsg(location);
char* inputData = signedBSMMessage.CreateBSMMessage(to_CharPtr(this->curPosition.x),
to_CharPtr(this->curPosition.y),
to_CharPtr(this->curSpeed.z ),
to_CharPtr(this->curDirection.z));
cout << "Start dispatchMsg" << endl;

ObuSigndBSM obuSigndBSM("BasicSafetyMessage", 01);
obuSigndBSM.setSignedBsm(inputData);
obuSigndBSM.setMsgLength(signedBSMMessage.getLength());
Coord pos;
traci->getRoadMapPos(pos);
string laneId = std::to_string(pos.z);
obuSigndBSM.setLandId(laneId.c_str());

bsmMessage=&obuSigndBSM;
this->sendDown(bsmMessage);
//delete bsmMessage;
cout << "End dispatchMsg" << endl;
EV_DEBUG << "BSMApp::dispatchMsg end " ;
delete(bsmMessage);

}

但是,我不断收到此异常:

Object BasicSafetyMessage is currently in (omnetpp::cEventHeap)simulation.scheduled-events, it cannot be deleted.

If this error occurs inside omnetpp::cEventHeap, it needs to be changed to call drop() before it can delete that object.

If this error occurs inside omnetpp::cEventHeap's destructor and Basic Safety Message is a class member,

omnetpp::cEventHeap needs to call drop() in the destructor -- in module (Veins::BSMApp) OBUScenerio.node[0].appl (id=7), at t=1s, event #2

我错过了什么?我们将不胜感激。

最佳答案

在调用 this->sendDown(bsmMessage) 之后考虑 OMNeT++ 模拟内核拥有的指针。不要在调用此方法后调用 delete(bsmMessage) - 否则您将在 OMNeT++ 传递事件时删除该事件(想想:关于您要发送的帧的所有信息)。

仅删除指向 OMNeT++ 已提供给您的数据的指针(例如,作为已接收数据的事件),即在处理接收到的帧的方法中。

关于omnet++ - 使用 vein 和 omnet++ 的自定义模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com