初始化指向结构的数组指针

时间:2015-11-04 12:39:39

标签: c arrays pointers

我得到错误运行时检查失败#3,我必须初始化P,我知道为什么但不知道怎么做。

点应该是一个变量2D数组,如float * points [3],目前用于测试目的。

CVAPI(CvPOSITObject*)  lvCreatePOSITObject( float points[5][3], int point_count )
{
    CvPoint3D32f* P; //array of structs with int x,y,z 
    for(int i = 0; i< point_count; i++)
    {
        P[i].x = points[i][0];
        P[i].y = points[i][1];
        P[i].z = points[i][2];
    }
    return cvCreatePOSITObject(P,point_count);
}

1 个答案:

答案 0 :(得分:1)

我对OpenCV了解不多,但我认为你应该分配一些内存来存储数据。

#include <stdlib.h> // add this to the head of the file to use malloc

CVAPI(CvPOSITObject*)  lvCreatePOSITObject( float points[5][3], int point_count )
{
    CvPoint3D32f* P; //array of structs with int x,y,z
    P = malloc(sizeof(CvPoint3D32f) * point_count); // allocate some memory
    for(int i = 0; i< point_count; i++)
    {
        P[i].x = points[i][0];
        P[i].y = points[i][1];
        P[i].z = points[i][2];
    }
    return cvCreatePOSITObject(P,point_count);
}

此代码可能不正确,因为这可能无法释放分配的缓冲区。