C 读取指针数据

C 读取指针数据,c,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], rI

我正在使用一个具有类似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]);
}
这种情况并不总是发生。有没有人遇到过类似的问题

PS数字应与第5行及之后的数字相同。
提前感谢。

快速查看后,应该调用函数giGetIndexedMesh两次。首先,通过将最后一个参数设置为NULL来检索所需的大小vcount和icount。第二次检索索引

在代码段中,使用旧值icount分配数组。所需值将在以后确定,但必须在以下时间之前确定:

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

我没有找到关于阵列布局的足够信息。因此,我没有完成malloc调用。您还应该检查malloc an giGetIndexedMesh的返回值。

这个问题需要一个可复制的示例和更多的解释。例如,什么是giGetIndexedMesh?这取决于您在giGetIndexedMesh中执行的操作。如果没有这些代码,读者就无法准确指出问题所在。这是一个将图形卡中的数据提取到指针中的函数。我认为这可能是一个更普遍的问题。信息缺失。不要在C中使用malloc&friends的结果。请不要仅仅因为您使用的是复制OpenGL函数样式的库,就用OpenGL标记您的问题。非常感谢Martin,正如您所说,我已经两次调用它了。但有时,当我启用其他属性时,我会在第一个指针单元格中获取垃圾。@ionas垃圾数据表示堆或堆栈溢出。检查所有函数调用是否传入了足够大小的数组。还要始终检查函数调用的返回值,可能其中一个函数调用失败,导致内存未初始化。@此外,函数还返回一个GIuint数组。这些是4字节无符号整数,不是有符号整数。
GIuint vcount, icount;
giGetIndexedMesh(&vcount, &icount, NULL);
GIunit *indices = malloc (...);
giGetIndexedMesh(&vcount, &icount, indices);