2012-05-16 4 views
0

Я изо всех сил пытался исправить некоторые ошибки в нашей игре. В игре используется порт Android Irrlicht и Bullet.Android Irrlicht Bullet случайная ошибка управления памятью

Этот же код был протестирован на ОС X и Windows без каких-либо проблем. Однако, когда мы портировали код на Android NDK и теперь получаем случайные сбои. Большинство сбоев находятся в libc.so, что, вероятно, является чем-то вроде nullpointerexception. Мы не используем scenenode->remove() в нашем коде, а не smgr->addToDeletionQueue.

Авария настолько случайна, что она встречается в следующих утверждениях.

  1. libc.so
  2. smgr->drawall()
  3. stepsimulation в пулю.

Ошибка возникает 90% времени, когда мы выгружаем уровень и загружаем следующий уровень или перезагружаем уровень. Сначала мы сомневались в компиляторе и использовали stlport. Должна ли поддержка библиотеки?

Я уверен, что информация, которую я предоставил, очень мало, чтобы угадать проблему. Но поскольку тот же игровой код отлично работал на других платформах, я просто хотел убрать свои сомнения по поводу различий, связанных с компилятором.

Простой malloc, а затем delete в android ndk сбой при удалении. Поэтому я хотел бы лучше понять, что то, что мы пытаемся исправить, - это глупая проблема, связанная с компиляторами.

ответ

0

После того, как эта проблема возникла в течение нескольких недель, я, наконец, нашел источник проблемы.

Я initiallized массив символов, как этот

char data = new char[10]; 

, а затем считается заполнение последнего символа, как обычно, с '\ 0'

data[10] = '\0'; 

, которые бросают исключение NullPointer.

Я был в состоянии указать эту проблему, когда я запускаю тот же код в Windows. Даже при работе с окнами проблема не возникала при работе с приложением отладчика. однако, когда я запускаю приложение, открывая exe напрямую, он разбился. Поэтому мне пришлось использовать программу «Application Verifier», чтобы указать на проблему.

Смежные вопросы