mi dice che c'è un accesso violento ad una locazione di memoria
Questa è semplicemente stupenda...

Ho iniziato a vedere il tuo codice dalla fine, senza interessarmi troppo della logica di funzionamento, e mi sono fermato al ciclo:

codice:
for(int i=-1000;i<1000;i++)
		{
			temp2=equazione(i+1);
			if((temp1<0 && temp2>0) || (temp1>0 && temp2<0))
			{
				ris[iter]=i;
				iter++;
			}
			if(temp2==0)
			{
				cout<<"Una radice e'  "<<i+1<<endl;
			}
			temp1=temp2;
		}
ris è un array composto da 3 elementi, l'indice iter cresce in modo indefinito...

P.S. Elimina inoltre il return nella funzione trova.