Look at your loop here:
for(int i=0; i<3*n; i++)
{
all[j].h = b[i].h;
all[j].w = min(b[i].w,b[i].l);
all[j].l = max(b[i].w, b[i].l);
j++; // increment
all[j].h = b[i].l;
all[j].w = min(b[i].w,b[i].h);
all[j].l = max(b[i].w, b[i].h);
j++; // increment again
all[j].h = b[i].w;
all[j].w = min(b[i].l,b[i].h);
all[j].l = max(b[i].l, b[i].h);
j++; // increment once again
}
Look at your allocations before the loop:
box * all = new box[3*n];
int j = 0;
int * msh = new int[3*n];
The all
has 3*n
items, but your loop not only loops up to 3*n
, but increments j
3 times within that loop. The value of j
will eventually go beyond the allocated space for all
.
1
solved Segmentation Fault on return of main function [closed]