Android, нативное приложение не может запуститься, когда я использую std :: vector :: push_back () - PullRequest
0 голосов
/ 01 апреля 2012


Мне нужно использовать векторный контейнер в моем родном приложении (это фреймворк cocos-2dx) Итак, я добавил

APP_STL: = stlport_static

до Application.mk Тогда

#include <vector>

в заголовочном файле для класса, который использует вектор Определите переменную как

std::vector<cocos2d::CCPoint*> *m_VertexAnchors;

А потом сделай это

m_VertexAnchors->push_back(point);

point вот собственно CCPoint* point И когда я запускаю свое приложение, я просто вижу черный экран, который исчезает через 2-3 секунды без какого-либо сообщения. Последнее сообщение в logcat: (фильтр по имени приложения и с подробным уровнем)

04-01 13: 22: 57.068: D / dalvikvm (2939): GC_EXTERNAL_ALLOC освободил 64K, 47% свободный 2887K / 5379K, внешний 0K / 0K, пауза 40мс

и до появления сообщений о загрузке библиотек ошибок нет. И я не видел ничего странного в основном журнале. Затем, когда я закомментировал

m_VertexAnchors->push_back(point);

приложение отлично работает.

Итак, есть ли что-то, что я пропустил, если нет, как я могу отладить это (я использую Eclipse с плагином sequoyah)

Буду признателен за любую помощь или предложения, спасибо.

1 Ответ

0 голосов
/ 01 апреля 2012

Перед использованием m_vertexAnchors вы должны правильно его инициализировать:

m_VertexAnchors = new std::vector<cocos2d::CCPoint*>();

вы должны помнить delete, когда больше не требуется.

Если вы можете избежать динамического выделения vector, объявите его как:

std::vector<cocos2d::CCPoint*> m_VertexAnchors;

и используйте его:

m_VertexAnchors.push_back(point);
...