C 初始化结构错误:';网格';未经初始化就被使用的

C 初始化结构错误:';网格';未经初始化就被使用的,c,struct,initialization,opencl,C,Struct,Initialization,Opencl,我正在尝试为我的OpenCl/GL流体创建3d网格。我遇到的问题是,由于某种原因,我的网格初始化函数不能正常工作。这是我的*.h、*.c设置和(最后)主呼叫: (网格h): (表格c): 在主界面中,我正在初始化我的网格,如下所示: int main(int argc, char** argv) { const int size3d = Bx*(By+2)*Bz; const int size2d = Bx*Bz; float3 * velocities = (floa

我正在尝试为我的OpenCl/GL流体创建3d网格。我遇到的问题是,由于某种原因,我的网格初始化函数不能正常工作。这是我的*.h、*.c设置和(最后)主呼叫:

(网格h):

(表格c):

在主界面中,我正在初始化我的网格,如下所示:

int main(int argc, char** argv)
{
    const int size3d = Bx*(By+2)*Bz;
    const int size2d = Bx*Bz;

    float3 * velocities = (float3*)malloc(size3d*sizeof(float3));
    float  * H = (float*)malloc(size2d*sizeof(float));
    float  * h = (float*)malloc(size2d*sizeof(float));

    for(int i = 0; i < size3d; i++){
        float3 tmp = make_float3(0.f,0.f,0.f);
        velocities[i] = tmp;
        if(i < size2d){
            H[i] = 1;
            h[i] = 2;
        }
    }

    grid3_t theGrid;
    grid3_init(theGrid, velocities, H, h, Bx, By, Bz); // <- ERROR OCCURS HERE
}
int main(int argc,char**argv)
{
常数int size3d=Bx*(由+2)*Bz;
常数int size2d=Bx*Bz;
float3*速度=(float3*)malloc(size3d*sizeof(float3));
float*H=(float*)malloc(size2d*sizeof(float));
float*h=(float*)malloc(size2d*sizeof(float));
对于(int i=0;i您需要创建
grid3
实例并将其指针传递到
grid3\u init
。您现有的代码只使用未初始化的指针。

这是有效的!为什么它以前不工作?我的意思是我有“typedef struct grid3*grid3\t;”对吗?我将其解释为“grit3\u t grid==struct grid3*grid”-错?你需要有结构实例,而不仅仅是指向任何地方的指针。
grid3\t网格
是指针,
struct grid3网格
是实际的结构实例。
void grid3_init(grid3_t grid,__global float3* val,__global float* H,__global float *h, int X, int Y, int Z){
    grid->values_ = val;
    grid->H_ = H;
    grid->h_ = h;
    grid->dimx_ = X;
    grid->dimy_ = Y;
    grid->dimz_ = Z;
}
int main(int argc, char** argv)
{
    const int size3d = Bx*(By+2)*Bz;
    const int size2d = Bx*Bz;

    float3 * velocities = (float3*)malloc(size3d*sizeof(float3));
    float  * H = (float*)malloc(size2d*sizeof(float));
    float  * h = (float*)malloc(size2d*sizeof(float));

    for(int i = 0; i < size3d; i++){
        float3 tmp = make_float3(0.f,0.f,0.f);
        velocities[i] = tmp;
        if(i < size2d){
            H[i] = 1;
            h[i] = 2;
        }
    }

    grid3_t theGrid;
    grid3_init(theGrid, velocities, H, h, Bx, By, Bz); // <- ERROR OCCURS HERE
}
struct grid3 theGrid;
grid3_init(&theGrid, velocities, H, h, Bx, By, Bz);