0

我收到此错误,我无法弄清楚的原因。是类型问题吗?错误就行了:
“size = objmesh->n_objvertexdata * sizeof(vec3) * sizeof(vec3);”
不知道是什么,一直在折腾。帮助?

objmesh = &objmesh[0];

unsigned char *vertex_array = NULL,
*vertex_start = NULL;
unsigned int i = 0, index = 0, stride = 0, size = 0;


size = objmesh->n_objvertexdata * sizeof(vec3) * sizeof(vec3); //this lines gives error

vertex_array = (unsigned char *) malloc(size);
vertex_start = vertex_array;

while (i != objmesh->n_objvertexdata) {
    index = objmesh->objvertexdata[i].vertex_index;

    memcpy(vertex_array, &obj->indexed_vertex[index], sizeof(vec3));
    vertex_array += sizeof(vec3);

    memcpy(vertex_array, &obj->indexed_normal[index], sizeof(vec3));

    vertex_array += sizeof(vec3);
    ++i;
4

1 回答 1

0

崩溃可能是因为 objmesh 是无效指针(NULL 或只是悬空指针)。当您访问与无效指针相关的内存时,您会崩溃。

或者这是另一个原因。据我了解,objmesh 是一些包含一些数据及其大小的容器。当你这样做时

objmesh = &objmesh[0];

objmesh 不再是容器,而是它保存的数据。所以你应该使用另一个变量进行赋值。

于 2012-10-20T23:28:40.863 回答