memcpy 导致Access Violation错误,怎么回事? 程序需要多次调用memcyp函数,前面几次对,后面出错。memcpy(dpControlPoints, value, (iRow+1)*(iColumn+1)*3*sizeof(double));memcpy(dpControlWeights, value, (iRow+1)*(iColumn+1)*sizeof(double));memcpy(dpKnotsU, value, (iRow+iUOrder+2)*sizeof(double)); 三条语句中value的值不同,iRow、Column值相同,iUOrder比iUOrder小。也就是第三次调用memcpy时,所需空间比前两次小很多。前面两句对,后面一句在iRow数值稍大时出问题。请问为什么?
解决方案 »
- 新手问题:请帮我解释一下UpdateData()函数
- 谁能推荐一个比较好的图表控件啊?
- 如何让串口通讯控件mscomm脱离vc环境?
- 关于CFileDialog如何记住上次打开的路径的问题。
- 请问有下载关于图像处理方面源代码的地方吗?新手上路,多多指教。
- 请问知道HICON,如何将图标写入ico文件?
- 在vc中不能调用MSDN,怎么样才能关联?
- Visual C++的sizeof
- 关于CButton类的问题!!!!
- 请问那里可以下载visual c++ MFC编程实例,扩展编程实例,6.0编程实例与技巧(机械)?
- MFC 中 如何复制一个bmp图片
- VC2010中 属性窗口 或输出窗口拖放时的效果如何实现的??
你那个Value是什么?
@heksn
谢谢你们的回复。
三次调用时,value 是三个不同的double型指针,都是作为函数参数传递的。将value的指向的数值赋给dpKnotsU。在memcpy之前用了memset。
memset(dpControlPoints, 0, MAXCONTROLPOINTS*sizeof(double));
memset(dpControlWeights, 0, MAXCONTROLPOINTS*sizeof(double)/3);
memset(dpKnotsU, 0, MAXKNOTS*sizeof(double));
我奇怪的是,数据类型一样,调用方式也一样,为什么前两次不出错,最后一次出错?
越界是什么意思?该怎么处理?
谢谢各位,问题找到了,参数dpKnotsU是一个double型数组,将其长度定义的大一些就可以了。
这也是内存的事情吧?内存、越界……真让人难受呀。