Я решаю проблему квантового механизма, которая требует, чтобы я нашел некоторые собственные значения, манипулируя некоторыми матрицами.Специфика этой проблемы не имеет значения, мне просто нужна помощь с проблемой c ++, я новичок в этом языке, и через пару часов я решил, что дальнейшие попытки решить ее самостоятельно будут бесполезны, и поэтому я обращаюсь к вам за помощью.
У меня есть проблема, когда glibc обнаруживает ошибку в конце моей программы, и я не могу правильно удалить ее, она слишком велика, чтобы копировать ее здесь, поэтому я просто скопирую часть, которая фактически выдает ошибку.
void hamiltonian(int, double **&);
int i,j;
int main()
{
int N = 1000; double **A;
hamiltonian(N, A);
//Physics here
.
.
.
.
.
//Delete
for(i=0; i<N; i++){delete []A[i];}
delete []A;
return 0;
}
void hamiltonian(int N, double **&A)
{
A = new double *[N];
for(i=0; i<N; i++)
{
A[i] = new double[N];
for(j=0; j<N; j++)
{
if(i==j)A[i][j] = 2;
if(i==j+1 || i==j-1){A[i][j] = 1;}
}
}
}
По словам моего профессора, мне приходится освобождать в той же функции, что и я, но я даже не думал об освобождении после того, как почти закончил свой проект, поэтому мне приходится переписывать много кода,проблема в том, что я не могу освободить A внутри функции гамильтониана, как мне нужно в других функциях (внутри //Physics).
Конечно, должен быть способ обойти это?Может показаться, что я немного неосведомлен, но это звучит как менее эффективный дизайн, если мне приходится освобождать в той же функции, что и я.