1

我正在使用最新的 SDK 开发一个 iOS 应用程序。

这个应用程序有一些 C++ 类。

当我为该类调用方法时,出现错误:

这是 C++ 类的一部分。

#ifdef __APPLE__
    const char* path = jFileName ;
    const char* tempPath =  jTempFileName ;

    const char* truckPath = jTruckFileName;
    const char* truckTempPath = jTruckTempFileName;
#endif

    MyFunction(path,tempPath);

On 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];当我的函数只有那一行时。

此错误仅出现在设备上。

我怎么知道问题出在哪里?

4

2 回答 2

2

你的堆栈不是那么大:

 unsigned char inbuf[1024000], outbuf[1024000];

改用堆分配:

std::vector<unsigned char> inbuf(1024000, 0), outbuf(1024000, 0);

或将您的工作分开,以便可以使用较小的堆栈缓冲区。


编译器不需要将缓冲区放在堆栈上,但在这种情况下可能有。

于 2013-03-07T13:57:18.687 回答
1

接听

我怎么知道问题出在哪里?

尝试启用异常断点进行调试。

  1. 转到断点导航器
  2. 点击“+”号
  3. 单击添加异常断点
  4. 点击“完成”

还可以尝试使用启用的僵尸对象进行调试。为此,请转到Product->Edit Scheme并检查“启用僵尸对象

于 2013-03-07T13:29:44.497 回答