Omnet++ 使用VELINES和omnet的自定义模块++;

Omnet++ 使用VELINES和omnet的自定义模块++;,omnet++,veins,Omnet++,Veins,我已经安装了Velse4.7,并完成了教程。一切正常。 现在我构建了一个更像DemoBaseApplayer的新模块。此模块继承自BaseAppLayer。 在initialize方法中,我调用dispatchMsg函数。如下所示: 基于几个答案,我在析构函数和finish方法中引入了cancelAndDelete(msg)。我还添加了delete(msg)方法,但没有效果 dispatchMsg() { //SignedBSMMessage sgndBSMMsg(location); cha

我已经安装了Velse4.7,并完成了教程。一切正常。 现在我构建了一个更像DemoBaseApplayer的新模块。此模块继承自BaseAppLayer。 在initialize方法中,我调用dispatchMsg函数。如下所示:

基于几个答案,我在析构函数和finish方法中引入了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);

}
dispatchMsg(){
//签名BSMMessage sgndBSMMsg(位置);
char*inputData=signedBSMMessage.CreateBSMMessage(to_CharPtr(this->curPosition.x)),
到_CharPtr(此->curPosition.y),
到_CharPtr(这个->curSpeed.z),
to_CharPtr(this->curDirection.z));
cout发送(BSM消息);
//删除BSM消息;

CUT< P>调用此-> SDENDOWN(BSMEN消息)后,考虑OMNET++模拟内核所拥有的指针。调用该方法后,不要调用Delphi(BSMEST)——否则,当OMNET++正在传递时,您将删除事件(思考:关于要发送的帧的所有信息)。 仅删除指向OMNeT++提供给您的数据的指针(例如,作为已接收数据的事件),即在处理已接收帧的方法中