Hallo zusammen, ich versuche gerade einen Algorithmus zu programmieren. Nachfolgend ein Teil der Berechnung: int sample_size=8000; int dateisize=8000; int a[sample_size]; int y[sample_size]; /* Initialize the SAM system. */ memset(a,0,sample_size); memset(y,0,sample_size); int c = 0; int N[dateisize-1]; //double N[dateisize - 1] = {0}; // N=SUMME_K=1(w(k)) w(k)=(i(k)-i(k-1)+j(k)-j(k-1)) int N_SUMME = 0; for (int i = 1; i < dateisize; i++) { //dateisize N[i] =(a[i] - a[i - 1] + y[i] - y[i-1]); N_SUMME = N_SUMME + N[i]; } Ich benutze einen ATSAM4S16C Xplained Board Cortex M4. Ich bekomme einen Dummy Handler an der stelle mit der for-Schleife und ich weis einfach nicht wieso. Ich habe einen size von 8000, wenn ich diesen auf 100 stelle, funktioniert es ohne den Dummy Handler. Bei Visual Studio funktioniert es... Vielleicht habt Ihr mir einen Tipp. Viele dank Grüße DDMW
Welche Sprache? Wieviel RAM? Sind die Arrays auf dem Stack? Wenn ja, wie groß ist der?
> Vielleicht habt Ihr mir einen Tipp.
Zu verschwenderisch mit Speicher.
Mit Atmel Studio also C Bin mir gerade nicht sicher wo die Arrays legen, habe gedacht die werden immer sofort in den RAM gelegt. Der SAM4S16C hat 128kbyte RAM
> Der SAM4S16C hat 128kbyte RAM
Und wieviel davon hast Du schon verschwendet?
Nach dem erstellen habe ich: Program Memory Usage : 100524 bytes 9,6 % Full Data Memory Usage :78752 bytes 60,1 % Full Theoretisch habe ich bei einem Array von (8000*(int 32bit))/8=32000Bytes Für das Array a = 32000 und y = 32000 als auch N = 32000 -> 96000 Bytes ohne den restlichen Ram Oder ?
Moin, Daniel W. schrieb: > int dateisize=8000; Daniel W. schrieb: > int N[dateisize-1]; //double N[dateisize - 1] = {0}; Hmm - und diese 2 Zeilen hintereinander in einem C Programm frisst dein Compiler so ganz kommentarlos und ohne Mecker? Da hab' ich doch leichte Zweifel... Gruss WK
Dergute W. schrieb: > Hmm - und diese 2 Zeilen hintereinander in einem C Programm frisst dein > Compiler so ganz kommentarlos und ohne Mecker? Da hab' ich doch leichte > Zweifel... Nennt sich "variable-length arrays" und ist seit C99 im Standard.
Hallo int dateisize=8000; ... int N[dateisize-1]; //double N[dateisize - 1] = {0}; ... for (int i = 1; i < dateisize; i++) { //dateisize ... N_SUMME = N_SUMME + N[i]; } Größe von N ist 7999. Der letzte gültige Index ist somit 7998. In der Schleife erfolgt der letzte Zugriff aber auf 7999!
Beitrag #4964375 wurde von einem Moderator gelöscht.
Beitrag #4964378 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.