Буфер протокола Google всегда выдает исключение неправильного размещения
Я новичок в буфере протокола Google. И теперь у меня есть проблема, как показано ниже:
Я создал простое сообщение в файле testMessage.proto:
option optimize_for = SPEED;
message TestMessage
{
optional string foo = 1;
optional string bar = 2;
}
Затем я сгенерировал это сообщение для файлов testMessage.pb.h и testMessage.pb.cc и включил эти файлы, а также добавил библиотеки libprotobuf в мой тестовый проект. Затем я написал простой код для использования этого класса:
TestMessage testMsg;
testMsg.set_foo("1234"); // set ok
testMsg.set_bar("abcd"); // set ok
string output;
try {
std::cout << testMsg.foo() << std::endl; // output foo ok
testMsg.PrintDebugString(); // throw bad allocation exception here
// testMsg.SerializeToString(&output); // also throw bad allocation exception here
} catch (std::exception ex) {
std::cout << ex.what() << std::endl;
}
Этот код очень прост, но я не могу понять, почему он не может работать правильно. Я погуглил мою проблему, но нигде не упоминается об этом. Все, пожалуйста, помогите мне с этим вопросом.