gpt4 book ai didi

C++内存故障排除

转载 作者:行者123 更新时间:2023-11-30 03:31:40 25 4
gpt4 key购买 nike

我正在为 Arduino 编写一些 C++ 代码。我正在做一个从 0 到 7 的 for 循环,当我打印出变量 n 和 m 时,它们工作正常。但是一旦我从 ufo[i][n][m] = rumskib[n][m]; 行中删除 // 值 n 和 m 将输出值如:

n: 6米:3

n: 6米:4

n: 1030米:5

我无法理解为什么我会搞乱我的内存。下面是相关代码:

for (int i = 0; i < 1; i++) {
antal_ufo++;
int * ufo[8][8];
*ufo[i] = new int[i];
int n, m;
for (n = 0; n < 8; n++) {
for (m = 0; m < 8; m++) {
Serial.print("n: ");
Serial.println(n);
Serial.print("m: ");
Serial.println(m);
Serial.println();
Serial.println();
//ufo[i][n][m] = rumskib[n][m];
delay(500);
}
}
}

最佳答案

你会得到未定义的行为,因为你只在数组中分配 i 元素 new int[i]; 当你尝试在 中写入时它可能发生任何事情>(i, j) 位置,比你有 UB。UB 意味着值可能会被破坏,您可能会崩溃、无限循环或其他问题。使用相应大小的已分配内存。

正确性代码可以是:

int K = 1;
for (int i = 0; i < K; i++) {
antal_ufo++;
auto ufo = new int[K][8][8];
int n, m;
for (n = 0; n < 8; n++) {
for (m = 0; m < 8; m++) {
ufo[i][n][m] = rumskib[n][m];
delay(500);
}
}
}

关于C++内存故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44044001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com