Я использую protobuf в качестве формата данных для сетевых коммуникаций.Отправка умного указателя на протобаф. Проблема с памятью
В моей модели данных есть WrapperMessage, wrapper, которая включает в себя вспомогательное сообщение RegistrationRequest и InputChecking.
Где-то в программе я создаю один тип сообщения (RegistrationRequest/InputChecking), затем передавая его на шаблоны функций, чтобы включить его в WrapperMessage, затем сериализуем и отправляем.
Но что-то не так с моим указателем? malloc/new/все, что обнаруживает кучу коррупции ?? Я не понимаю, почему он не хочет принимать 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;
}