Visual C++ 6.0 sp5
w2k sp3
Необходимо выделить память для "треугольного" массива переменной величины.
При этом выдается сообщение об ошибке в в2к (единственное исключение это N=48, что удивляет)
const int N=64;
double **newmatrix( void )
{
int i;
double **P;
P=new double *[N+1];
for(i=0;i<=N;i++) P[i]=new double [2*(N-i)+1];
return P;
}
void deletematrix(double **P)
{
int i;
for(i=0;i<=N;i++) delete[] P[i];
delete[] P;
}
Релиз:
The instruction at "0x77fcbb5c" referenced memory at "0x00000038". The memory could not be "written".
При чем оно появляется при освобождении памяти а не при выделении, т.е. при вызове deletematrix.
Дебаггер говорит:
DAMAGE: after Normal block (#202) at 0x002F9168
Press retry to debug the application
нажимаю дебаг:
The exception Breakpoint
A breakpoint has been reached.
(0x80000003) occurred in the application at location 0x0041588f.
Под вин98 такая ошибка возникает существенно реже, но всё же она есть.
может я делаю чего не так или есть более грамотные способы выделения памяти для сложных массивов.