динамическое выделение и освобождение памяти
От: Jamais Vu  
Дата: 28.10.02 11:00
Оценка:
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 такая ошибка возникает существенно реже, но всё же она есть.

может я делаю чего не так или есть более грамотные способы выделения памяти для сложных массивов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.