将分配给一个3D阵列
De-allocate a 3D array
我在C 工作,我必须分配一个三阵列的双打。这是用于分配的代码:
cellMatrix = (double***)malloc(N*sizeof(double**));
if (cellMatrix == NULL)
{
errorlog("Allocation Error -> CellMatric can't be created");
}
for (int k = 0; k < N; k++)
{
cellMatrix[k] = (double**)malloc(M*sizeof(double*));
if (cellMatrix[k] == NULL)
{
errorlog("Allocation Error -> *CellMatric can't be created");
}
for (int i = 0; i < M; i++)
{
cellMatrix[k][i] = (double*)malloc(B*sizeof(double));
if (cellMatrix[k][i] == NULL)
{
errorlog("Allocation Error -> **CellMatric can't be created");
}
}
}
分配没有任何问题。最后,当我必须将"立方体"分配给"立方体"时,发生了一些问题。这是代码:
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
free(cellMatrix[i][j]);
}
free(cellMatrix[i]);
}
free(cellMatrix);
该程序在CellMatrix [i]的交易期间停止,打印此错误消息(Visual Studio Pro '13)
hog.exe触发了断点。
有人可以帮助我解决这个问题吗?
从您的错误消息中,我怀疑您是在调试模式下运行的,并且(无意间)在free(cellMatrix[i]));
行中设置了一个断点。
按照Wyzard的建议,您可以将连续数组分配给
double cellArray[] = new double[N*M*B];
和用
索引double& cell(int i, int j, int k) { return cellArray[i + j*N + k*N*M]; }
相关文章:
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 如何使用条件计算 3D 网格中从一个点到另一个点的所有路径
- OPENCV是否有一个软件包将3D点转换为2D自上而下的视图
- 围绕另一个 3D 点旋转一个 3D 点
- 将分配给一个3D阵列
- Opengl 创建一个 3D 框而不是一个简单的三角形
- 在C++中循环遍历一个3d索引的1d数组
- 尝试创建一个 3D 矢量,该矢量将保留指向指向无符号字符的指针的指针
- 无法将一个 3D 矩阵转换为另一个 3D 矩阵
- 用C++制作一个简单的3D图形引擎有多难
- 在opengl- c++中创建一个3d游戏表面/游戏板
- 在openSceneGraph中设计一个3D房间
- 创建和迭代一个3D数组
- 如何改变xyz顺序时,使用一个扁平的3D数组
- 如何使用c++中的Eigen库创建一个高效的3D矩阵
- 使用一个动态分配的内存块创建2d或3d数组
- 在c++ 3D中计算一个矩形是否与一条射线相交
- 如何适应一个平面到一个3D点云
- 在c++中洗牌一个3d数组
- 输出一个3D数组的c++代码