malloc动态地循环 - seg错误

时间:2014-11-26 12:58:46

标签: c pointers malloc

我想做那样的事情:

我正在调用一个函数:

myfunc( .....,  float ** const ouPointer)
{

 ....

float * myPointer;
size_t *AnArray;
    ...
if ( NULL == *ouPointer )
{
        myPointer = (float *) malloc( N * sizeof( float ) );
        assert( NULL != myPointer );
        *ouPointer = myPointer;
}
else
{
        myPointer = *ouPointer;
}

for ( int i = 0; i < N; i++ )
{
    (&myPointer)[ i ] = (float *) malloc( AnArray[ i ] * sizeof( float ) );
    assert( NULL != (&myPointer)[ i ] );
}

//filling pointer

} //end of myfunc 

但它在断言行中给出了seg错误。

为了将数据传递给rh函数我正在使用:

float * thePointer = NULL; 
myfunc(...., &thePointer);

1 个答案:

答案 0 :(得分:1)

您正在尝试分配许多指针。而你正试图有一个指针来存储所有这些指针。并且您正在尝试使用一个指向调用者的局部变量的指针,其中调用者获取指向指针数组的指针。

在循环中,代码必须是

myPointer [i] = (float *) malloc (...). 
因此,myPointer必须具有float **类型 - 它是一个指向float *数组的指针。声明和作业必须是

float** myPointer;
myPointer = (float **) malloc( N * sizeof( float* ) );

最后参数必须是

myfunc( .....,  float *** const ouPointer)