other problem을 MyMesh
생성자로 디버깅했습니다. 이 코드에서 :값을 인쇄하려고 할 때 bad_alloc 예외가 발생했습니다
if (hollow) {
numTriangles = n*8;
triangles=new MyTriangle[numTriangles];
if (smooth) numSurfacePoints=n*8;
else numSurfacePoints=n*12;
surfacePoints=new SurfacePoint[numSurfacePoints];
}else {
numTriangles = n*4;
triangles=new MyTriangle[numTriangles];
if (smooth){
numSurfacePoints=n*4;
surfacePoints=new SurfacePoint[numSurfacePoints];
surfacePoints[n*4]=SurfacePoint(vector3(0,0,1),vector3(0,0,1));
surfacePoints[n*4+1]=SurfacePoint(vector3(0,0,-1),vector3(0,0,-1));
}else{
numSurfacePoints=n*6;
surfacePoints=new SurfacePoint[numSurfacePoints];
surfacePoints[n*6]=SurfacePoint(vector3(0,0,1),vector3(0,0,1));
surfacePoints[n*6+1]=SurfacePoint(vector3(0,0,-1),vector3(0,0,-1));
}
}
메쉬의 필수 SurfacePoints와 삼각형을 결정했습니다. bool "hollow"와 "smooth"는 원뿔에 구멍이 필요하거나 법선이 같은 경우를 가리 킵니다. 그러나 나는 그것이 무의미하다고 생각합니다.
문제는 : hollow == false 인 경우 문제가 발생하지만 크래시가 발생하지 않고 배열에 값을 넣을 수 있지만 이럴 경우 다음과 같이 말합니다.
for(int i=0;i<numSurfacePoints;i++){
std::cout<<"vertex "<<i<<"-> pos:"<<surfacePoints[i].pos.x<<" "<<
surfacePoints[i].pos.y<<" "<<surfacePoints[i].pos.z<<
" norm:"<<surfacePoints[i].norm.x<<" "<<surfacePoints[i].norm.y<<
" "<<surfacePoints[i].norm.z<<"\n";
}
i = 0 일 때 bad_alloc 예외가 발생합니다.
추가적으로, 상위 코드 세그먼트가 new 연산자에 bad_alloc을 던진 시간이 있었지만 그 문제는 방금 해결되었지만 관련성이 있습니다.
아무도 도와 줄 수 있습니까?
중공 == 거짓 인 경우 수행중인 작업을 기록해 둡니까? – Ashish