我正在编写一个C ++应用程序,即使没有给出错误的alloc错误,它也开始偶尔拥有我认为糟糕的分配。在一种方法中,我有:
float * out = new float[len] //len works out to about 570000
memset(out, 0, sizeof(float) * len);
当此代码运行时,我在地址EXC_BAD_ACCESS
获得out[4]
(始终是第4个元素)。在LLDB中,我测试了误差的范围;事实证明,对于任何out[n]
,我永远无法访问/写入4 <= n < 1028
。
我认为存在某种分配问题阻止我获得对此内存块的干净访问,但我无法弄清楚如何找到负责任的代码。我能开始的任何想法吗?
如有必要,我可以提供更多详细信息。谢谢!