Pointer auf struct = Seg. fault ?
-
Hi,
kann es sein, dass der gcc probleme hat mit structs die als Elemente pointer auf funktionen haben ?// befindet sich in blubb.h typedef struct someType{ int (*ptr1) (struct someType*, char *); int (*ptr2) (struct someType*); } someType; // main.c #include "blubb.h" // so gehts ohne seg. fault someType Item; Item.ptr1= &func1; Item.ptr2= &func2; // so kommt ein seg vault someType *Item; Item->ptr1= &func1; Item->ptr2= &func2;
oder hab ich da irgendwo nen andren Fehler ?
-
Nein, Probleme hat der gcc damit nicht, nur du hast keine Speicher fuer
'Item' reserviert.mfg
v R
-
hm, allerdings mit dem Dev-C++ unter win kann ichs ohne Probleme compilen und laufen lassen.
Und von extra Speicher-Reservierung steht in meinem buch auch nix
-
test_user schrieb:
hm, allerdings mit dem Dev-C++ unter win kann ichs ohne Probleme compilen und laufen lassen.
Und von extra Speicher-Reservierung steht in meinem buch auch nixDeine Item-Variable ist aber lediglich ein Zeiger und der hat auf einem
32-Bit System eine groesse von 4Byte. Um auf die Struktur zugreifen zu koennen,
musst du fuer diese entsprechend Speicher reservieren und spaeter wieder
freigeben:someType *Item = (someType*)malloc(sizeof(someType)); if(Item) //speicherreservierung erfolgreich? { Item->ptr1= &func1; Item->ptr2= &func2; } //...weitere anweisungen... //irgendwann speicher wieder freigeben free(Item);
mfg
v R
-
test_user schrieb:
hm, allerdings mit dem Dev-C++ unter win kann ichs ohne Probleme compilen und laufen lassen.
Zufall. Das ist der Stoff, aus dem unerklärliche Abstürze gemacht sind
Und von extra Speicher-Reservierung steht in meinem buch auch nix
Dann schmeiß es weg. Oder verbrenn es. Oder wisch dir damit den ***** ab. Oder lies es einfach nochmal genauer, sowas steht in jedem Buch
-
Dev-C++
Der benutzt übrigens auch nur den GCC.....