Как я могу повторно использовать память protobuf без ее перераспределения - PullRequest
0 голосов
/ 06 марта 2020

У меня есть такое сообщение protobuf, как это

message ImgReply {  
  bytes data = 1;    
}

И я хочу назначить его содержимое с помощью set_allocated метода:

string *buf = new string();
GRPC_CALL_BACK_FUNCTION() {

    .....
    reply->set_allocated_data(buf);
    return Status::OK;
}

Теперь каждый раз, когда функция grp c Если вызов, buf будет выпущен автоматически. Я хотел бы использовать его так, чтобы мне не нужно было каждый раз перераспределять память. Я попытался вызвать метод reply->release_data();, чтобы очистить поле data, и клиент вообще не получил бы никаких данных. Так как же я могу использовать эту переменную buf и не позволить protobuf удалить ее автоматически, пожалуйста?

1 Ответ

0 голосов
/ 22 апреля 2020

API gRP C C ++ syn c не предоставляет никаких функций для пользовательского выделения памяти. API обратного вызова был запланирован с функцией распределения сообщений, но он еще не был экспериментальным, поэтому он не готов к публичному использованию. Это должно быть доступно в течение следующего месяца или двух.

...