У меня есть такой сценарий:EXC_BAD_ACCESS в протоколе коде буфера
а) статическая библиотека создана для прошивки и используют классы буферов протокола, сгенерированные из файла Protobuf сообщения. Эта статическая библиотека используется в приложении (A)
б) protobuff сообщения имеет кучу инкубационных и allocated_setters, все C++ код
с) Применение (С), который имеет зависимость от проекта, который создает статическую библиотеку.
Что происходит:
Когда статическая библиотека входит в состав Application (A) и App побежал, я получаю EXC_BAD_ACCESS в одном из основного сеттер класса буфера протокола.
inline void ABCD::set_companyname32chars(const char* value) {
set_has_companyname32chars();
if (companyname32chars_ == &::google::protobuf::internal::kEmptyString) {
companyname32chars_ = new ::std::string;
}
companyname32chars_->assign(value);
}
В последней строке
companyname32chars_->assign(value)
генерирует EXC_BAD_ACCESS. Путь я использую этот сеттер, как это:
ABCD* abcd = new ABCD();
abcd->set_companyname32chars("Andes");
Кикер, тот же код работает отлично на Application C на одном телефоне.
Статическая библиотека создается со следующими срезами: armv7, armv7s и arm64.
iPhone я пытаюсь это на это iPhone 5 и IOS 8,2 (бета)
EXC_BAD_ACCESS что-то делать с памятью, однако,
а) Почему же код работает с подобным когда он включен как зависимость от проекта, а не статическая библиотека. б) Есть ли способ отладки и реплики, что происходит? Я попытался включить зомби, но безрезультатно.
благодарит за комментарий. Установщик ABCD * abcd = новый ABCD(); abcd-> set_companyname32chars ("Анды"); вызывается из с в статической библиотеке. Единственный интерфейс для библиотеки - это один API, OpenFile (NSString * filePath) -, . Я говорю это, нет другой ссылки set_companyname32chars, кроме как из в статически связанной библиотеке. – zyzzyxx