Ich kann es nicht sehen...



  • Hallo.

    Ich bin ein wenig verzweifelt. Ich kann den Fehler einfach nicht finden. Das ist der original Quellcode einer Function und ich habe noch die darin vorkommenden structs aufgeführt.
    Ihr müsst den Code garnicht genau verstehen... Ich bekomme gleich ganz am Anfang einen Absturz (Zeile 41).

    typedef struct TMCoeff{
    	double Value;
    	unsigned long Index;
    }TMCoeff;
    
    typedef struct TDomain{
            //...
    }TDomain;
    
    typedef struct TVariable{
            //...
    }TVariable;
    
    typedef struct TElement{
            unsigned long ExternalNumber;
            //...
    }TElement;
    
    typedef struct TNode{
            //...
    }TNode;
    
    int SetupInternalDiffFlux(TDomain* D, TMCoeff*** A, double** b, TVariable* x, TVariable* DiffCoeff, TVariable* S, unsigned int Output){
    	unsigned long fi=0, fj=0, fk=0, fl=0, fm=0, nAE=0, nIndex=0;
    	TElement *P=NULL;
    	TNode *N1=NULL, *N2=NULL;
    	long *ID=NULL;
    	TMCoeff **fA=NULL, *Vector=NULL;
    	double *fb=NULL;
    
    	nAE = D->nAreaElement;
    	printf("nAE: %lu\n", nAE);
    	//GetMatrixAndVector(&fA, &fb, nAE, 0);
    
    	Vector = (TMCoeff*)calloc(nAE, sizeof(TMCoeff));
    	ID = (long*)calloc(nAE, sizeof(TMCoeff));
    
    	for(fi=0;fi<nAE;fi++){ID[fi]=-1; Vector[fi].Value=.0; Vector[fi].Index=0;}
    
    	printf("1.\n"); //Wird noch am Bildschirm ausgegeben!!!
    	/*Crash*/ if(P->ExternalNumber==3862){printf("Vector[3862][0] = %2.4f\n", Vector[0].Value);}
    	printf("2.\n"); //Erscheint nicht auf dem Bildschirm!!!
    
    	for(fi=0;fi<nAE;fi++){
    		P=&D->pElement[fi];
    		if(P->Internal==1){
    			Vector[0].Index = 1;
    			if(P->ExternalNumber==3862){printf("Vector[3862][0] = %2.4f\n", Vector[0].Value);}
    			for(fj=0;fj<P->nNode;fj++){SetInternalFlux(Vector, ID, P, P->E[fj], DiffCoeff, fj, 1);}
    
    			TMArraySortSM_LOCAL(Vector, Vector[0].Index);
    
    			fA[fi] = (TMCoeff*)calloc(Vector[0].Index, sizeof(TMCoeff));
    			for(fj=0;fj<Vector[0].Index;fj++){fA[fi][fj] = Vector[fj];ID[Vector[fj].Index]=-1;}
    			fA[fi][0].Index = Vector[0].Index;
    			ID[P->Index] = -1;
    		}
    	}
    
    	free(ID); free(Vector);
    
    	*A =fA;
    	*b = fb;
    
    	return 0;
    }
    

    Ich mach das eigentlich schon ne Zeit lang, aber ich kann den Fehler einfach nicht finden. Wäre super, wenn mal einer von Euch drauf schauen könnte.

    Vielen Dank,
    CJens

    Compiler:
    TCC 0.1.26 für Windows 64 bit



  • P ist doch NULL, da geht P-> nicht.



  • ...Danke!


Anmelden zum Antworten