gpt4 book ai didi

c++ - 为什么会发生这个段错误?

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

所以我已经追踪到该行的段错误,但我不明白为什么这是一个段错误。有人可以详细说明我方法的错误吗?

这里是变量声明。

size_t i, j, n, m, chunk_size, pixel_size;
i = j = n = m = 0;
chunk_size = 256;
pixel_size = 4;

这里是数组声明。

uint8_t** values = new uint8_t*[chunk_size];
for (i = 0; i < chunk_size; ++ i)
values[i] = new uint8_t[chunk_size];

float** a1 = new float*[chunk_size];
for (i = 0; i < chunk_size; ++i)
a1[i] = new float[chunk_size];

这是发生段错误的地方。

float delta, d;

for (i = 0; i < 256; ++i) {
for (j = n = m = d = 0; j < 256; j = m) {
while (i == 0 || d != 0) {
d = a1[i][m]; <------SEGFAULT per GDB
++m;
}
delta = (d - a1[i][j]) / m;
n = j + 1;
while (n < j + m) {
a1[i][n] = a1[i][n - 1] + delta;
++n;
}
}
}

我是 C++ 的新手,不明白为什么这是一个段错误。这不是将变量值设置为数组中变量的正确方法吗?那是我的段错误的根源吗?

注意:整个事情的重点是用我的简单插值公式将 4x4 数组扩展到 256x256 数组。

最佳答案

while (i == 0 || d != 0) {
d = a1[i][m]; <------SEGFAULT per GDB
++m;
}

在某些情况下(例如,在外循环的第一次迭代中),这是一个无限的 while 循环。

关于c++ - 为什么会发生这个段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29784534/

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