VC++中有关于“内存不能为read'的问题

jingle1711 2013-10-25 10:13:16
不知道为什么 程序运行到
判断语句
if(sp1.ax==0&&sp1.ay==0&&sp1.az==0)时就报出一下的错误,其中sp1.ax=1 sp1.ay=1 sp1.az=0 实在找不错问题出现在哪?
...全文
1009 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcf_reader 2013-12-21
  • 打赏
  • 举报
回复
内存泄漏了。
版主大哥 2013-10-25
  • 打赏
  • 举报
回复
引用 楼主 u012307653 的回复:
不知道为什么 程序运行到 判断语句 if(sp1.ax==0&&sp1.ay==0&&sp1.az==0)时就报出一下的错误,其中sp1.ax=1 sp1.ay=1 sp1.az=0 实在找不错问题出现在哪?
你不是说断在这里?看看call stack,变量的值
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
sp1=spc.GetAt(j); 在这段后输出的sp1.ax,sp1.ay,sp1.az的值都是正常的。还可能是什么问题呢?
版主大哥 2013-10-25
  • 打赏
  • 举报
回复
sp1=spc.GetAt(j); if(sp1.ax==0 && sp1.ay==0 && sp1.az==0) 跟下,看是不是越界了?得到的sp1是不是无效的
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
刚才打错了 应该是 while(cubet.GetSize()!=0)。
boylafong 2013-10-25
  • 打赏
  • 举报
回复
你的wile(cubet.GetSize()!=i) 但你的i又是在do里面定义的?
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
do { for(i=0;i<cubet.GetSize();i++) { cb1=cubet.GetAt(i); feasibledot(&cubet); for(j=0;j<spc.GetSize();j++) { sp1=spc.GetAt(j); if(sp1.ax==0 && sp1.ay==0 && sp1.az==0) { ra=w1*(alpha1*fabs(sp1.mpd[0]-xx1)+beta1*fabs(sp1.mpd[1]-yy1)+gamma1*fabs(sp1.mpd[2]-zz1))+w2*(alpha2*fabs(sp1.mpd[0]-xx1)+beta2*fabs(sp1.mpd[1]-yy1)+gamma2*fabs(sp1.mpd[2]-zz1))+w3*fabs(alpha3*(sp1.mpd[0]-xx1)+beta3*fabs(sp1.mpd[1]-yy1)+gamma3*fabs(sp1.mpd[2]-zz1))+w4*fabs(alpha4*(sp1.mpd[0]-xx1)+beta4*fabs(sp1.mpd[1]-yy1)+gamma4*fabs(sp1.mpd[2]-zz1)); if(ra<rb) { rb=ra; jsn1=j; isn1=i; } } else if((sp1.ax==0 && sp1.ay==0) || (sp1.ax==0 && sp1.az==0) || (sp1.ay==0 && sp1.az==0)) { ra1=w1*(alpha1*fabs(sp1.mpd[0]-xx1)+beta1*fabs(sp1.mpd[1]-yy1)+gamma1*fabs(sp1.mpd[2]-zz1))+w2*(alpha2*fabs(sp1.mpd[0]-xx1)+beta2*fabs(sp1.mpd[1]-yy1)+gamma2*fabs(sp1.mpd[2]-zz1))+w3*fabs(alpha3*(sp1.mpd[0]-xx1)+beta3*fabs(sp1.mpd[1]-yy1)+gamma3*fabs(sp1.mpd[2]-zz1))+w4*fabs(alpha4*(sp1.mpd[0]-xx1)+beta4*fabs(sp1.mpd[1]-yy1)+gamma4*fabs(sp1.mpd[2]-zz1)); ra2=w1*(alpha1*fabs(sp1.mpd[0]-xx1)+beta1*fabs(sp1.mpu[1]-yy1)+gamma1*fabs(sp1.mpd[2]-zz1))+w2*(alpha2*fabs(sp1.mpd[0]-xx1)+beta2*fabs(sp1.mpu[1]-yy1)+gamma2*fabs(sp1.mpd[2]-zz1))+w3*fabs(alpha3*(sp1.mpd[0]-xx1)+beta3*fabs(sp1.mpu[1]-yy1)+gamma3*fabs(sp1.mpd[2]-zz1))+w4*fabs(alpha4*(sp1.mpd[0]-xx1)+beta4*fabs(sp1.mpu[1]-yy1)+gamma4*fabs(sp1.mpd[2]-zz1)); ra4=w1*(alpha1*fabs(sp1.mpu[0]-xx1)+beta1*fabs(sp1.mpu[1]-yy1)+gamma1*fabs(sp1.mpd[2]-zz1))+w2*(alpha2*fabs(sp1.mpu[0]-xx1)+beta2*fabs(sp1.mpu[1]-yy1)+gamma2*fabs(sp1.mpd[2]-zz1))+w3*fabs(alpha3*(sp1.mpd[0]-xx1)+beta3*fabs(sp1.mpu[1]-yy1)+gamma3*fabs(sp1.mpd[2]-zz1))+w4*fabs(alpha4*(sp1.mpu[0]-xx1)+beta4*fabs(sp1.mpu[1]-yy1)+gamma4*fabs(sp1.mpd[2]-zz1)); ra=min(min(ra1,ra2),ra4); if(ra<rb) { if(ra==ra1) { point2=1; } else if(ra==ra2) { point2=2; } else { point2=4; } rb=ra; jsn2=j; isn2=i; } } } }while(cubet.GetSize()!=i); 大致的代码就是这样的。
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
但是运行之前的程序的时候都没有问题呀??
版主大哥 2013-10-25
  • 打赏
  • 举报
回复
你把部分代码贴上...
青花瓷 2013-10-25
  • 打赏
  • 举报
回复
这可能是你电脑上装的是VC6,与其他软件有冲突。比如office。建议使用高版本的VC,比如VC2010,VC2008
boylafong 2013-10-25
  • 打赏
  • 举报
回复
引用 2 楼 u012307653 的回复:
进入调试后出现以下对话框 哪位高手帮忙解决一下呀。谢谢了。
类似于某个值越界了。
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
进入调试后出现以下对话框
哪位高手帮忙解决一下呀。谢谢了。
boylafong 2013-10-25
  • 打赏
  • 举报
回复
sp1是结构? ax ay az是什么类型? 设置断点看下ax ay az有没有值
版主大哥 2013-10-25
  • 打赏
  • 举报
回复

外事不知问谷歌 内事不知问百度 房事不知问天涯
jingle1711 2013-10-25
  • 打赏
  • 举报
回复
那请问一下 这个call stack要怎么看其变量呢

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧