1
我使用protobuf作爲網絡通信的數據格式。發送智能指針給protobaf。內存問題
在我的數據模型中有WrapperMessage,其中包含子消息RegistrationRequest和InputChecking的包裝。
程序中的某處我創建了一種類型的消息(RegistrationRequest/InputChecking),然後將它傳遞給函數模板以將其包含在WrapperMessage中,然後序列化併發送。
但是我的指針有問題嗎? malloc /新/任何檢測堆腐敗?我不明白的是,爲什麼他不希望採取mes.get(),並在運行時將..
錯誤:嚴重錯誤檢測c0000374
我的測試程序的所有代碼:
#include "ProtobufDataModels.pb.h"
#include <string>
#include <iostream>
#include <memory>
template <class T>
static void SendProto(T * message);
template <class T>
void SendProto(T * message)
{
WrapperMessage wm;
if (std::is_same<T, InputChecking>::value)
{
std::shared_ptr<InputChecking> mes(message);
std::string msg;
message->SerializeToString(&msg);
std::cout << msg << std::endl; // all ok
// set inputChecking mes. to wrapperMessage
wm.set_allocated_mes_inputchecking(mes.get()); // crash here
}
else if (std::is_same<T, RegistrationRequest>::value)
{
}
}
int main()
{
InputChecking * inputChecking = new InputChecking();
inputChecking->set_login("Jack");
SendProto(inputChecking);
std::cin.get();
return 0;
}