2012-10-20 2 views
0

이 오류가 발생합니다. 이유는 알 수 없습니다. 유형 문제입니까? 오류가 줄에 있습니다 :
"size = objmesh-> n_objvertexdata * sizeof (vec3) * sizeof (vec3);"
그게 뭔지 잘 모르겠다. 도움?EXC_BAD_ACCESS, OPENGL ES

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

objmesh가 잘못된 포인터 (NULL 또는 그냥 매달린 포인터)이기 때문에 충돌이 발생했을 수 있습니다. 그리고 무효 포인터를 기준으로 메모리에 액세스 할 때 충돌이 발생합니다.

여기 또 다른 이유가 있습니다. objmesh가 일부 데이터를 보유하고있는 컨테이너이며 크기라는 것을 이해합니다. 이 작업을 수행 할 때

objmesh = &objmesh[0]; 

objmesh는 더 이상 컨테이너가 아니며, 보유하고있는 데이터입니다. 따라서 할당을 위해 다른 변수를 사용해야합니다.

+0

당신은 반갑습니다. objmesh = & obj-> objmesh [0]; 첫 번째 줄에서 잘못된 개체를 가리키고있었습니다. – user1191343