Protobuf: Va set_allocated_* supprimer l'allocation d'un objet?
J'ai ce petit protobuf code (simplifié, seul le nécessaire est contenue):
message ParamsMessage {
required int32 temperature = 1;
}
message MasterMessage {
enum Type { GETPARAMS = 1; SENDPARAMS = 2;}
required Type type = 1;
optional ParamsMessage paramsMessage = 2;
}
Je vais maintenant créer un MasterMessage de la manière suivante:
ParamsMessage * params = new ParamsMessage();
params->set_temperature(22);
MasterMessage master;
master.set_type(MasterMessage::SENDPARAMS);
master.set_allocated_paramsmessage(params);
La question est: Dois-je (après traitement avec le message) supprimer la params
Message, ou va protobuf supprimer il pour moi? Je ne trouve rien dans la doc.
Vous devez vous connecter pour publier un commentaire.
Depuis posant la question, j'ai continué à trouver la réponse. Peut-être quelqu'un est intéressé par la réponse, trop.
À partir d'ici: https://developers.google.com/protocol-buffers/docs/reference/cpp-generated
Qui signifie: tant Que vous ne pas appel
release_*
, protobuf prendra soin de la suppression de l'objet. Si vous avez besoin de l'Objet après traitement avec le Protobuf Message, vous devez relâcher à l'aide derelease_*
, ce qui permettra d'éviter Protobuf pour supprimer votre objet.