release版本崩溃的问题

celerylxq 2011-08-26 09:39:24
程序中定义了4个结构体对象,结构体如下:
struct TableDes{
char Name[300][80];//名称
char Unit[300][20];//单位
int iRegCount;//个数
BYTE bytValue[60];//数值(字节)
unsigned char m_bDataType[30]; //是否有符号 1:有符号,0:无符号
double m_dCoe[30]; //数据系数
};
TableDes A,B,C,D;
然后从TXT点表中读信息,当A有32个信息点,B有29个信息点时程序运行正常,可B增加到31个点时debug版本正常,release版本崩溃,提示"0x00000000"指令应用的“0x00000000”内存。该内存不能为“read”
后来我将B放到对话框初始化中,并将它改为局部变量,debug版和release版都正常,求解原因?
...全文
225 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaojunjun1202 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 celerylxq 的回复:]
引用 10 楼 zyrr159487 的回复:
release下也可以调试的
http://blog.csdn.net/mywait_00/article/details/2893955

多谢多谢,这方法试了,可行,能调试了,但还是没能明白原因,解决的方法是把一个局部变量double val[30];改成了WORD val[30];就没问题了
[/Quote]

。。。。
celerylxq 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zyrr159487 的回复:]
release下也可以调试的
http://blog.csdn.net/mywait_00/article/details/2893955
[/Quote]
多谢多谢,这方法试了,可行,能调试了,但还是没能明白原因,解决的方法是把一个局部变量double val[30];改成了WORD val[30];就没问题了
gold_water 2011-08-31
  • 打赏
  • 举报
回复
要么数组越界,要么指针问题,仔细查下
zyrr159487 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 celerylxq 的回复:]

引用 9 楼 heksn 的回复:
releae下也可以调试的 跟一下不就知道了

你说的是vs2005下吧?公司还用的vc6。。。
[/Quote]
http://blog.sina.com.cn/s/blog_4a2f7ae80100dv66.html
那,试试这个,不过这个方法我没测试过
zyrr159487 2011-08-26
  • 打赏
  • 举报
回复
release下也可以调试的
http://blog.csdn.net/mywait_00/article/details/2893955
  • 打赏
  • 举报
回复
releae下也可以调试的 跟一下不就知道了
celerylxq 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]
可能数组越界等,你操作数组时估计有问题,或者控件不够了,用堆来分配B等试试
[/Quote]
可是没道理点表中多了2个信息release就崩溃啊。。。
celerylxq 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shen_wei 的回复:]
struct TableDes{
char Name[300][80];//名称
char Unit[300][20];//单位
int iRegCount;//个数
BYTE bytValue[60];//数值(字节)
unsigned char m_bDataType[30]; //是否有符号 1:有符号,0:无符号
double m_dCoe[30]; //数据系数
};

……
[/Quote]
(30336/1024)*4=118k,算多吗?
shen_wei 2011-08-26
  • 打赏
  • 举报
回复
struct TableDes{
char Name[300][80];//名称
char Unit[300][20];//单位
int iRegCount;//个数
BYTE bytValue[60];//数值(字节)
unsigned char m_bDataType[30]; //是否有符号 1:有符号,0:无符号
double m_dCoe[30]; //数据系数
};

这个是数组你看看占用多少空间, sizeof(A) = 30336
oyljerry 2011-08-26
  • 打赏
  • 举报
回复
可能数组越界等,你操作数组时估计有问题,或者控件不够了,用堆来分配B等试试
ouyh12345 2011-08-26
  • 打赏
  • 举报
回复
数组很大了,用指针吧
Eleven 2011-08-26
  • 打赏
  • 举报
回复
空指针异常~
Eleven 2011-08-26
  • 打赏
  • 举报
回复
空指针一场~
celerylxq 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 heksn 的回复:]
releae下也可以调试的 跟一下不就知道了
[/Quote]
你说的是vs2005下吧?公司还用的vc6。。。
founderfang 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fengbingchun 的回复:]
有可能越界了吧
[/Quote]
如果越界的话在debug模式可以看到提示,说某某内存块corrupt
fengbingchun 2011-08-26
  • 打赏
  • 举报
回复
有可能越界了吧

15,978

社区成员

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

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