Hallo zusammen, ich reite grade bisschen auf einem problem herum und bin bisher nicht auf die zündende Idee bekommen ☺
ich teste grade teile meines Prgramms und verwende ein paar struct arrays die (scheinbar) den seg fault bei der ausführung auslösen. (kompilieren klappt einwandfrei)
meine main:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <stdlib.h> #include <stdio.h> #include <math.h> #include "data_structures.h" #include "setPixel.h" #include "filled_raster_circle_function.h" #include "raster_circle_function.h" #include "max_CDN.h" #include "define_RObj.h" int main() { int m_x; int m_y; int rad; int i; int j; int k; in_sze = (sizeof(RCL_INPUT)/sizeof(RCL_INPUT[0]));//-1; printf("%d\n", in_sze); printf("m_x: "); scanf("%d", &m_x); printf("m_y: "); scanf("%d", &m_y); printf("rad: "); scanf("%d", &rad); printf("rad_max: %d\n", max_CDN[rad]); /*********TEST**********/ struct CDN D3ACU[(sizeof(RCL_INPUT)/sizeof(RCL_INPUT[0]))][68][488]; struct PRTCDN RObj[CDN_num]; struct USTATS UNIT; define_RObj(rad, max_CDN[rad], D3ACU, RCL_INPUT, RObj, UNIT); for(i = 0; i < CDN_num; i += 1){ printf("Object %d: %d\n", i, RObj[i].rcl_value); } return 0; } |
aus der eingehängten data_structures.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | [...] struct RCL{ int x_axis; int y_axis; int rcl_value; //char type[20]; }; struct RCL RCL_INPUT[] = { {475, 501, 160}, {497, 494, 160}, {507, 494, 160}, {503, 502, 160}, {509, 501, 160}, {497, 506, 160}, {485, 505, 160}, {484, 503, 160}, {510, 507, 389}, {515, 505, 389}, {524, 503, 160}, {522, 515, 389}, {532, 517, 241}, {537, 512, 389}, {539, 522, 241}, {544, 522, 241}, {547, 522, 389}, {551, 517, 158}, {476, 487, 160}, {486, 517, 389}, {491, 515, 160}, {492, 512, 160}, {495, 511, 389}, {500, 515, 389}, {499, 518, 160}, {499, 523, 389}, {502, 527, 389}, {490, 529, 911}, {504, 535, 911}, /*{507, 512, 389}, {506, 516, 389}, {512, 519, 389}, {515, 545, 911}, {521, 531, 389}, {517, 529, 241}, {518, 526, 241}, {540, 531, 241}, {535, 531, 241}, {537, 538, 241}, {547, 551, 241}, {558, 545, 241}, {565, 528, 241}, {573, 540, 241}*/ }; [...] |
Ich habe in der header den array ab Zeile 42 auskommentiert, da dass Programm bis hier einwandfrei läuft. Ab 29 zugewiesenen Werten gibt mir das Programm dann beim ausführen die Fehlermeldung.
gdb erzählt mir dann folgendes (was aus meiner Sicht keinen Sinn ergibt):
1 2 | 0x0000555555555286 in main () at x_test.c:21 21 printf("%d\n", in_sze); |
entschuldigt bitte den Stil, aber ich bin grade noch mitten drin 😉