声明2D动态数组并从Vector填充

时间:2017-03-03 22:49:04

标签: c++ arrays opencv

我对C ++比较陌生,并且使用OpenCV来创建和训练SVM。但是,当使用trainAuto()方法时,我收到内存位置0x0的错误访问错误。据推测,这是OpenCV的事实并不重要,因为它是指针操作的问题。我目前的代码如下。它应该制作一个大小为NUMIMGS * NUMVECTORS的2D数组。如果你发现我可能出现内存不足或没有正确分配的原因,请告诉我...... FYI NUMIMGS和NUMVECTORS分别是20和15000,所以这是一个非常大的花车阵列。

所以现在我得到EXC_ARITHMETIC代码= EXC_I386_DIV子代码= 0x0,可能是它试图对数据集进行操作但是拒绝0个值条目?

1 个答案:

答案 0 :(得分:0)

这部分看起来很可疑:

trainDataFloats[i] = thisHog;
  1. 您已经为trainDataFloats[x]分配了一个值,因此您正在泄漏内存并可能将trainDataFloats[i]设置为指向它不应该的内容。
  2. i此处循环播放至NUMIMGS,但trainDataFloats已分配NUMVECTORS元素,如果NUMIMGS大于NUMVECTORS您将有一个缓冲区溢出。在这种特殊情况下,它并不存在,但它确实表明出现了问题。