作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个 double 组,其大小取决于用户输入的值,但是当我的 double 组在 [1999] 左右时,我遇到了段错误。
所以我决定使用指针,但问题是,我将值设置为 0,但经过几次循环迭代后,我的值会自行改变。
这是我的代码:
int Limit = 0;
int Bomb = 0;
int getsum(int num)
{
int result = 0;
while (num)
{
result = result + num % 10;
num /= 10;
}
return result;
}
int calc_limit(int x)
{
while ((getsum(x)) < Bomb)
x++;
return x;
}
int main(int argc, char **argv)
{
Bomb = atoi(argv[1]);
Limit = calc_limit(0);
int i = 0;
int j = 0;
bool **visited;
if ((visited = malloc(Limit * sizeof(bool))) == NULL)
return;
while (i < Limit)
{
if ((visited[i] = malloc(Limit)) == NULL)
return;
while (j < Limit)
{
visited[i][j] = false;
j++;
}
j = 0;
i++;
}
// printf("%d\n", visited[0][0]);
}
例如,visited[0][0],当我设置它时等于 0,但突然它会变成等于 176。
我检查了这个值何时发生变化,当 i = 3 时,它在我的第二个循环中发生了变化。
我不知道为什么。
感谢您的帮助
最佳答案
一个问题是您没有为访问的
分配足够的内存。
if ((visited = malloc(Limit * sizeof(bool))) == NULL)
应该是:
if ((visited = malloc(Limit * sizeof (bool*))) == NULL)
或者:
if ((visited = malloc(Limit * sizeof *visited)) == NULL)
请注意,sizeof
是一个运算符,而不是一个函数。因此,大多数代码样式指南建议在 sizeof
及其参数之间添加一个空格。
关于C - 我的指针的值自行改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439777/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!