矩阵 - "Access violation writing location 0x00900B0C" - C++ 中的错误
Matrix- "Access violation writing location 0x00900B0C" - error in c++
我有矩阵的问题。我想拥有一个简单的矩阵并根据其他值分配值。
我想拥有STH。这样:
i --> // i is my x-value and j my y-value in the matrix
j 25 25 25 25 25 // inital condition values
| 27 26 25 .. .. // filling the matrix with values depending on a
v 31 28 .. .. .. // border condition, the inital values and neighbour values.
.. .. .. .. .. //and so on
我尝试用代码解释:
首先,我定义了一些变量和一个矩阵,例如
int Matrix[10][1000]; //<-- i´m not sure how to implement a dynamical matrix correctly
// so i just defined its size like this
int i = 0;
int j = 0;
int iter=0;
int Iterator=1000;
在下一步中,我想用零的类似:
填充矩阵for (i = 0; i <= size_X; i++) {
for (j = 0; j <= size_Y; j++) {
Matrix[i][j] = 0;
}
}
但是它在这里给了我这个错误"访问违规写作位置0x00900b0c"。此外
for (i = 0; i <= Size_X; i++) {
Matrix[i][0] = 25;
,但我想的主要问题是,我的代码的主要部分是通过迭代和引用矩阵中的neigbour细胞来填充矩阵的其他单元格:
do {
for (j = 1; j <= Size_Y; j++) {
Matrix[0][j] = Matrix[0][j - 1] + Fo*0.5*(2.0*Bi*(Umgebungstemperatur - Matrix[0][j - 1]) + 2.0*(Matrix[0 + 1][j - 1] - Matrix[0][j - 1]**) + 2.0*Bi*(Umgebungstemperatur - Matrix[0][j]) + 2.0*(Matrix[0 + 1][j] - Matrix[0][j]));
Matrix[Size_X][j] = Matrix[Size_X][j - 1] + Fo*0.5*(2.0*Bi*(Umgebungstemperatur - Matrix[Size_X][j - 1]) + 2.0*(Matrix[Size_X - 1][j - 1] - Matrix[Size_X][j - 1]) + 2.0*Bi*(Umgebungstemperatur - Matrix[Size_X ][j]) + 2.0*(Matrix[Anzahl_dx- 1][j] - Matrix[Size_X][j]));
for (i = 1; i < Size_X; i++) {
Matrix[i][j] = Matrix[i][j - 1] + Fo*0.5*(Matrix[i - 1][j - 1] - 2.0*Matrix[i][j - 1] + Matrix[i + 1][j - 1] + Matrix[i - 1][j] - 2.0*Matrix[i][j] + Matrix[i + 1][j]);
}
}
iter = iter + 1;
} while (iter != Iterator);
}
终于我只想将矩阵写入.txt或.csv-file,但它只是为我带来了第一行,具有正确的值,并且程序在之后分解。
什么是size_x和size_y?(我在评论中问(
这只是矩阵的大小 -> size_x = 11 and size_y = 1001(来自Mattis Seehaus的评论(
所以在此循环中:
for (i = 0; i <= size_X; i++) {
for (j = 0; j <= size_Y; j++) {
Matrix[i][j] = 0;
}
}
您将尝试访问Matrix[11][1001]
。那在您的数组之外,因此是违规的。数组的最后一个元素是Matrix[9][999]
。因此,在索引时不要超越它。
通常您会这样做:
size_X = 10;
size_Y = 1000;
并将循环更改为:
for (i = 0; i < size_X; i++) { // Just < instead of <=
for (j = 0; j < size_Y; j++) { // Just < instead of <=
Matrix[i][j] = 0;
}
}
同样的for
循环。
也有这个:
Matrix[Size_X][j] = Matrix[Size_X][j - 1] + Fo*0.5*(
^^^^^^
// Again this is an access violation.
和另一种访问违规:
for (i = 1; i < Size_X; i++) {
Matrix[i][j] = Matrix[i][j - 1] + Fo*0.5*(Matrix[i - 1][j - 1] - 2.0*Matrix[i][j - 1] + Matrix[i + 1][j - 1] + Matrix[i - 1][j] - 2.0*Matrix[i][j] + Matrix[i + 1][j]);
^^^^^
// Again this is an access violation.
}
您不显示size_X
和size_Y
定义的位置。
此外,它也脱离了界限:
for (i = 0; i <= size_X; i++) {
for (j = 0; j <= size_Y; j++) {
Matrix[i][j] = 0;
}
}
迭代循环时,您应该使用<
而不是<=
。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'