我收到了这个错误,这是我无法弄清楚的原因。这是类型问题吗?
错误在线:
“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;
答案 0 :(得分:0)
崩溃可能是因为objmesh是一个无效指针(NULL或只是悬空指针)。当你相对于无效指针访问内存时,你将会崩溃。
或者这是另一个原因。据我所知,objmesh是一个容纳一些数据和容量的容器。当你这样做时
objmesh = &objmesh[0];
objmesh不再是容器,而是它拥有的数据。所以你应该使用另一个变量进行分配。