Ir para conteúdo
Fórum Script Brasil
  • 0

access violation


luisfalm

Pergunta

Oi pessoal

Por acaso alguém tem uma dica para isso: estou com erro de "Access Violation" no seguinte código:

for(j=0; j<ny; j++){

y[j]= w[nz][j];

for(i=0; i<nz; i++) y[j] = y[j] + z*w[j];

}

Estranho que os valores da matriz w são constantes. Esse código está dentro de um loop que teria que executar 150 vezes. Entretanto, sempre na iteração 49 dá o erro de "Access Violation". Quando o fiz um debug do código o valor de w para essa iteração estava "???". Nas iterações anteriores estavam normal.

A varável w foi alocada da seguinte maneira:

w= new double *[nz+1];

for(i=0; i<(nz+1); i++) w= new double [ny];

Estou usando o Builder C++ 6.0. Por acaso é alguma configuração de ambiente que devo fazer?

Qualquer ajuda fico agradecido.

abraços

Fernando

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá pessoal...ninguém tem uma dica para me dar? Segue o código completo da função que estou chamando. Sempre dá erro na iteração k=49, na linha que coloquei em destaque...

float mlp1_teste(int nx, int nz, int ny){

FILE *fin;

AnsiString in;

double **x, *z, *y, **v, **w;

float lambda_z=0.001, lambda_y=0.001;

int s_real, s_esperada, i, j, k, acerto=0, ns, *se;

registro reg;

int ac[6]={0,0,0,0,0,0};

//********* aloca memoria para RNA

// abre arquivo de dadosm para teste da RNA

in= PATH + FEATURE + "teste.rna";

fin= fopen(in.c_str(),"rb");

fread(&ns,sizeof(int),1,fin);

// camada de entrada

x= new double *[ns];

for(i=0; i<ns; i++) x= new double [nx];

se= new int [ns];

for(i=0; i<ns; i++){

for(j=0; j<nx; j++) fread(&x[j],sizeof(double),1,fin);

fread(&se,sizeof(int),1,fin);

}//for i

fclose(fin); fin=NULL;

// camada oculta

z= new double [nz];

// camada de saída

y= new double [ny+1];

// peso entre x e z

v= new double *[nx+1];

for(i=0; i<(nx+1); i++) v= new double [nz];

// peso entre z e y

w= new double *[nz+1];

for(i=0; i<(nz+1); i++) w= new double [ny+1];

// abre arquivo de pesos

in= PATH + FEATURE + "pesos.rna";

if((fin= fopen(in.c_str(),"rb"))==NULL) return -1;

// peso entre x e z

for(i=0; i<(nx+1); i++)

for(j=0; j<nz; j++) fread(&v[j],sizeof(double),1,fin);

// peso entre z e y

for(i=0; i<(nz+1); i++)

for(j=0; j<ny; j++) fread(&w[j],sizeof(double),1,fin);

// fecha arquivo de pesos

fclose(fin); fin=NULL;

// teste da rede

for(k=0; k<ns; k++){

// saída da RNA

if(se[k]!=0) s_esperada=1;

else s_esperada=0;

// calcula entrada da camada oculta

for(j=0; j<nz; j++){

z[j]= v[nx][j];

for(i=0; i<nx; i++) z[j]= z[j] + x[k]*v[j];

}// for j

// calcula a saída da camada oculta

for(j=0; j<nz; j++) z[j]= 1./(1.+exp(-lambda_z*z[j]));

// calcula entrada da camada de saída

for(j=0; j<ny; j++){

y[j]= w[nz][j];

for(i=0; i<nz; i++) y[j] = y[j] + z*w[j];

}// for j

// calcula a saída da camada de saída

for(j=0; j<ny; j++) y[j]= 1./(1.+exp(-lambda_y*y[j]));

// saída real da RNA

for(j=0; j<ny; j++)

if(y[j]>0.5) s_real= 0;

else s_real= 1;

// verifica se acertou

if(s_real==s_esperada){

acerto++;

ac[k%ns]++;

}

}//for k

// libera memória

for(i=0; i<ns; i++){ delete[] x; x = NULL; }

delete[] x; x = NULL;

delete[] se; se = NULL;

delete[] z; z = NULL;

delete[] y; y = NULL;

for(i=0; i<(nx+1); i++){ delete[] v; v = NULL; }

delete[] v; v = NULL;

for(i=0; i<(nz+1); i++){ delete[] w; w = NULL; }

delete[] w; w = NULL;

return (float)(100*acerto)/ns;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...