我对C ++比较陌生,并且使用OpenCV来创建和训练SVM。但是,当使用trainAuto()方法时,我收到内存位置0x0的错误访问错误。据推测,这是OpenCV的事实并不重要,因为它是指针操作的问题。我目前的代码如下。它应该制作一个大小为NUMIMGS * NUMVECTORS的2D数组。如果你发现我可能出现内存不足或没有正确分配的原因,请告诉我...... FYI NUMIMGS和NUMVECTORS分别是20和15000,所以这是一个非常大的花车阵列。
所以现在我得到EXC_ARITHMETIC代码= EXC_I386_DIV子代码= 0x0,可能是它试图对数据集进行操作但是拒绝0个值条目?
答案 0 :(得分:0)
这部分看起来很可疑:
trainDataFloats[i] = thisHog;
trainDataFloats[x]
分配了一个值,因此您正在泄漏内存并可能将trainDataFloats[i]
设置为指向它不应该的内容。i
此处循环播放至NUMIMGS
,但trainDataFloats
已分配NUMVECTORS
元素,如果NUMIMGS
大于NUMVECTORS
您将有一个缓冲区溢出。在这种特殊情况下,它并不存在,但它确实表明出现了问题。