搜索
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 计数溢出
标题:
计数溢出
只看楼主
vfdff
等 级:
侠之大者
威 望:
8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:
79.17%
楼主
问题点数:0 回复次数:7
计数溢出
使用
void printfit()
{
char sz[2];
sprintf(sz,"%d",g_iShared);
puts(sz);
}
时,为什么只能显示到10 ??而不是到99 才溢出呢 ??
error.JPG
(57.31 KB)
搜索更多相关主题的帖子:
溢出
计数
2008-10-25 16:01
沼泽
等 级:
业余侠客
威 望:
8
帖 子:291
专家分:228
注 册:2008-9-15
第
2
楼
得分:0
char sz[2];
sz里面还有有结束符的空间'\0'所以你申请的2字节的空间
其实只能装1字节的字符,因此到10就溢出了
2008-10-26 08:51
vfdff
等 级:
侠之大者
威 望:
8
帖 子:2172
专家分:425
注 册:2005-7-15
第
3
楼
得分:0
回复 2# 沼泽 的帖子
怎么 连续输出了两个 10 后出问题?
前面的两个 10 没有问题?
~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-26 11:10
沼泽
等 级:
业余侠客
威 望:
8
帖 子:291
专家分:228
注 册:2008-9-15
第
4
楼
得分:0
不好意思,我也不太清楚
2008-10-26 18:55
vfdff
等 级:
侠之大者
威 望:
8
帖 子:2172
专家分:425
注 册:2005-7-15
第
5
楼
得分:0
回复 4# 沼泽 的帖子
哈哈 ,没关系了,大家一起讨论进步就好了
~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-27 00:55
nwpu063417
等 级:
论坛游民
威 望:
8
帖 子:428
专家分:28
注 册:2007-5-11
第
6
楼
得分:0
没能看到这个问题的完整代码,但我觉得有可能是内存中栈溢出,或者是指针的错误
2008-10-27 22:45
vfdff
等 级:
侠之大者
威 望:
8
帖 子:2172
专家分:425
注 册:2005-7-15
第
7
楼
得分:0
完整代码
#include <stdio.h>
#include <windows.h>
int g_iShared = 0;
void printfit()
{
char sz[2];
sprintf(sz,"%d",g_iShared);
puts(sz);
}
int __cdecl main()
{
while(true){
printfit();
int iNew = g_iShared +1;
if (iNew == 10)
{
// iNew = 0;
}
g_iShared = iNew;
Sleep(1000);
}
return 0;
}
~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-28 00:43
随心
等 级:
版主
威 望:
12
帖 子:2577
专家分:250
注 册:2007-8-12
第
8
楼
得分:0
明显越界了。
就像2楼说的,sz只有两个字节的长度,当到10时,第一个字节存放49,第二个存48,但最后还要有一个'\0'要存入,数组长度不够,当然要越界了。
至于楼主说的第一个10没问题那可能是编译器的问题吧。我用VS2003,第一个10程序就挂了。
天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-10-28 14:52
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-240512-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.037588 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved