【发布时间】:2012-07-21 21:43:33
【问题描述】:
当 i=0 和 j=2 时,我得到一个分段错误; 但我不知道为什么!
你能帮我吗?
这是我的职责:
void allocationdynamiquetableautroisdimdentier(int**** Matrice,int nbniveau, int nbligne, int nbcolonne)
{
int i,j;
*Matrice=(int***) malloc (sizeof(int**)*nbniveau);
for (i=0; i<nbniveau; i++)
{
(*(Matrice))[i]=(int**) malloc (sizeof(int*)*nbligne); // allocation dynamique de la matrice Matrice
for (j=0; j<nbligne; i++)
{
((*(Matrice))[i])[j]=(int*) malloc (sizeof(int)*nbcolonne);
}
}
}
【问题讨论】:
-
三指针,真的吗????天哪,为什么?
-
@TonyTheLion 再次阅读。有 4 个星号。
-
当然有更有效的方法来实现这一点,而且有太多不必要的括号,但我不明白为什么它会出错,除非 malloc 返回 NULL。
-
分配一个平面数组并使用辅助函数在 (i,j,k) 到平面索引之间转换并返回可能更合理。
-
如果你从不增加 j,j 怎么可能等于 2?