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 に答える