Я разрабатываю приложение для iOS с последним SDK.
Это приложение имеет несколько классов C ++.
Когда я вызываю метод для этого класса, я получаю сообщение об ошибке:
Это часть класса C ++.
#ifdef __APPLE__
const char* path = jFileName ;
const char* tempPath = jTempFileName ;
const char* truckPath = jTruckFileName;
const char* truckTempPath = jTruckTempFileName;
#endif
MyFunction(path,tempPath);
На MyFunction(path,tempPath);
, path
а также tempPath
имеет действительное значение.
Но я получаю ошибку здесь:
void MyFunction(const char* inFileName, const char* outFileName)
{
[ ... ]
unsigned char inbuf[1024000], outbuf[1024000];
[ ... ]
}
Добавляя комментарии я обнаружил, что ошибка здесь: unsigned char inbuf[1024000], outbuf[1024000];
когда у функции есть только эта строка.
Эта ошибка появляется только на устройстве.
Как я могу узнать, где проблема?
Ваш стек не такой большой:
unsigned char inbuf[1024000], outbuf[1024000];
вместо этого используйте выделение кучи:
std::vector<unsigned char> inbuf(1024000, 0), outbuf(1024000, 0);
или разделите вашу работу так, чтобы можно было использовать меньший буфер стека.
Компилятору не требуется помещать ваши буферы в стек, но это, вероятно, имеет место в этом случае.
Отвечать за
Как я могу узнать, где проблема?
попробуйте отладку с Точка останова включена.
Также попробуйте отладку с включенными объектами зомби. Для этого перейдите к Продукт-> Редактировать схему и проверить «Включить зомби-объект«