读指针数据

时间:2016-02-08 20:10:51

标签: c

我正在使用一个具有类似OpenGL语法的库。当使用函数将数据传递给指针时,它有时会引入第一个单元格无关的数字。

int *rIndices = (int*)malloc(icount * 500* sizeof(int));
giGetIndexedMesh(&vcount, &icount, rIndices);
for (int j = 0; j < icount; j += 3)
{
    printf("%d %d %d\n", rIndices[j], rIndices[j + 1], rIndices[j + 2]);
}

输出结果是:

-1107141503 1047065916 1058222111
- 1118597697 -1083120598 1041096918
-1118541674 -1082575688 1040872831
-1129197583 -1082576454 1041095778
170 190 135
100 174 172
116 175 184
176 191 178
177 176 178

这不会永远发生。有没有人遇到类似的问题?

PS数字应该像第5行和之后。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

快速查看documentation后,您应该调用函数giGetIndexedMesh两次。首先,通过将最后一个参数设置为NULL来检索所需的大小(vcounticount)。第二次检索指数。

在您的代码段中,您使用旧值icount分配数组。所需的值稍后确定,但您必须在之前确定:

GIuint vcount, icount;
giGetIndexedMesh(&vcount, &icount, NULL);
GIunit *indices = malloc (...);
giGetIndexedMesh(&vcount, &icount, indices);

我没有找到有关阵列布局的足够信息。因此,我没有完成malloc电话。您还应该检查mallocgiGetIndexedMesh的返回值。