Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 增加++;没有明显原因的价值_C_Variables_Memory_Ansi - Fatal编程技术网

C 增加++;没有明显原因的价值

C 增加++;没有明显原因的价值,c,variables,memory,ansi,C,Variables,Memory,Ansi,我有一个变量,它可以在没有任何通知的情况下增加它的值。它的行为可以通过简单的printf()在代码的某些随机部分进行修改 我在gdb中附加了我的可执行文件,得到了以下信息: 101 graus[grau]++; (gdb) print arestas $7 = 5 (gdb) n 95 for (i = 1 ; i <= vertices ; i++) { (gdb) print arestas $8 = 6 谢谢你的帮助 PS:我不知道这个问题是否足够清楚,但

我有一个变量,它可以在没有任何通知的情况下增加它的值。它的行为可以通过简单的printf()在代码的某些随机部分进行修改

我在gdb中附加了我的可执行文件,得到了以下信息:

101         graus[grau]++;
(gdb) print arestas
$7 = 5
(gdb) n
95      for (i = 1 ; i <= vertices ; i++) {
(gdb) print arestas
$8 = 6
谢谢你的帮助


PS:我不知道这个问题是否足够清楚,但如果不清楚,请询问所需的信息。

您有一行内存溢出

graus[grau]++;
因为grau从1到顶点。您需要将其修改为

graus[grau - 1]++;
此外,graus应该用顶点位置来声明,而不是顶点-1

unsigned graus[vertices];

您的线路内存溢出

graus[grau]++;
因为grau从1到顶点。您需要将其修改为

graus[grau - 1]++;
此外,graus应该用顶点位置来声明,而不是顶点-1

unsigned graus[vertices];

grau
可以是
0
顶点的值。由于您声明了
未签名的graus[vertices-1]
,这将溢出到堆栈上的下一个对象中,在您的示例中,它似乎是
AreStats

如果您得到
顶点=1
grau
将是
0
1
,因此
graus
需要能够包含2个元素,因此
无符号graus[顶点+1]

修正一下graus的大小,你就应该很好了


然而,@WhozCraig也提出了一个关于循环边界的有趣问题

grau
可以是
0
顶点的值。由于您声明了
未签名的graus[vertices-1]
,这将溢出到堆栈上的下一个对象中,在您的示例中,它似乎是
AreStats

如果您得到
顶点=1
grau
将是
0
1
,因此
graus
需要能够包含2个元素,因此
无符号graus[顶点+1]

修正一下graus的大小,你就应该很好了


然而,@WhozCraig也提出了一个关于循环边界的有趣问题

你确定你没有在
graus
的范围之外写作吗?你确定你没有在
graus
的范围之外写作吗?呃
graus[0u-1]
if all
getValueFromMatrix()==false
?Ermm
graus[0u-1]
如果全部
getValueFromMatrix()==false