PDA

Visualizza la versione completa : [C] Errore a runtime nell'accesso a locazione di memoria


felpone
01-08-2012, 13:39
Penso che l'errore sia un accesso a una locazione di memoria del sistema ma non capisco dov'..




#include <stdio.h>

double inner_product(const double *a,const double *b,int n){
double sum=0;
while (a<a+n && b<b+n){
sum+=(*a)*(*b);
a++;
b++;
}

return sum;

}



int main(){

double a[]={2.2,3.6};
double b[]={3.2,6.5};

int n=2;

printf("%f",inner_product(a,b,n));


system("pause");



}

Scara95
01-08-2012, 14:22
while (a<a+n && b<b+n)

a sar sempre maggiore di a+n, se tu modifichi a modifichi anche a+n! Lo stesso vale per b.

torn24
01-08-2012, 14:46
Non che i puntatori siano il mio punto forte :zizi: tutto l'opposto !

ma il problema nella condizione del while , che non fa ripetere 2 volte il ciclo ma molte
di pi .

prova ad inserire questa riga ad inizio funzione per rendertene conto

printf(" a %x a+n %x \n",a,a+n);

LeleFT
01-08-2012, 14:52
Originariamente inviato da felpone
Penso che l'errore sia un accesso a una locazione di memoria del sistema ma non capisco dov'..


Qualcuno si preso la briga di leggersi il codice e di "scovarselo da solo", ma rimane il fatto che sei tu a dover dire qual l'errore che ottieni in esecuzione, riportandone il messaggio.

Per le prossime volte.

Ciao. :ciauz:

Loading