Появилась проблема. Не могу понять почему.
Я начал писать под Вижуал, все работает, добил класс до конца, пихаю в Борланд 6, все компилится, но вот проблема:
void SLLandscape::genMeshes(SLMesh *mesh, int x, int y)
{
if(x > mesh->x || y > mesh->y)
return;
SLMesh *r=NULL, *e=NULL;
int limit=x*y, sx, sy, jungle, wd, count=0;
SLVertex *vertex=new SLVertex [limit];
SLNormal *normal=new SLNormal [limit];
for(int i=0;i<mesh->x;i+=x-1)
{
for(int j=0;j<mesh->y;j+=y-1)
{
SLMesh *mesh0=new SLMesh;
char name[500];
sprintf(name, "mesh_%d_%d", count++, rand()%100);
int len=strlen(name);
mesh0->name=new char [len];
strcpy(mesh0->name, name);
sx=jungle=0;
for(int k=i;k<x+i;++k)
{
if(k >= mesh->x)
continue;
++sx; sy=0;
for(int l=j;l<y+j;++l)
{
if(l >= mesh->y)
continue;
++sy;
vertex[jungle]=mesh->vertex[k*mesh->y+l];
normal[jungle++]=mesh->normal[k*mesh->y+l];
}
}
mesh0->x=sx; mesh0->y=sy;
wd=sx*sy;

Вот на эти строчки динамически выделаемой памяти Борланд заостряет внимание - после нескольких успешных проходов цикла программа падает, ссылается на память, причем строго если wd < 121 && (mesh->x < 150 || mesh->y < 150). Если wd больше, то идет нормально. Главное что на Вижуале идет безупречно при любых wd. Копался в компиляторе, непомогло.
mesh0->vertex=new SLVertex [wd];
mesh0->normal=new SLNormal [wd];
/*
for(k=0;k<wd;++k)
{
mesh0->vertex[k]=vertex[k];
mesh0->normal[k]=normal[k];
mesh0->vertex[k].number=k;
}
*/
wd=0;
for(k=0;k<mesh0->x;++k)
{
for(int l=0;l<mesh0->y;++l)
{
int var=k*mesh0->y+l;
mesh0->vertex[var]=vertex[var];
mesh0->normal[var]=normal[var];
mesh0->vertex[var].texpoint[0]=(float)k;
mesh0->vertex[var].texpoint[1]=(float)l;
mesh0->vertex[var].number=wd++;
}
}
this->addMesh(&r, &e, mesh0);
this->genCube(mesh0);
this->genTriangles(mesh0);
}
}
delete [] vertex;
delete [] normal;
if(mesh->prew)
{
mesh->prew->next=r;
r->prew=mesh->prew;
}
else
{
this->mroot=r;
}
if(mesh->next)
{
mesh->next->prew=e;
e->next=mesh->next;
}
else
{
this->mend=e;
}
delete mesh;
}