|
7 registered members (3run, miwok, AndrewAMD, Quad, TipmyPip, fairtrader, 1 invisible),
637
guests, and 2
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
Problem mit realloc()
#258694
04/01/09 15:20
04/01/09 15:20
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
OP
Expert
|
OP
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
Hey @all, ich häng hier gerade an einem Problem mit realloc, oder besser gesagt zwei Probleme wobei ich glaube das die zusammenhängen. Also, ich hab ein Struct erstellt und will dieses nun per realloc zur Laufzeit vergrößern. Der Code des Structs sieht so aus: typedef struct
{
int version_;
STRING* name_;
STRING* path_;
} ADDIN_SOURCE;
ADDIN_SOURCE *sources;und dann habe ich probiert so neuen Speicher anzufordern: sources = (sources *)realloc(sources,sources_all*sizeof(sources)); (sources_all ist eine Variable) das funktioniert aber nicht, so funktioniert das allerdings: sources = (int *)realloc(sources,sources_all*sizeof(sources)); aber ich hab iwie das Gefühl dass das so nicht richtig sein kann. Außerdem stürzt die Engine dann beim Beenden sporadisch ab. Also Acknex.exe hat ein Problem festgestellt und muss beendet werden. Gut, wahrscheinlich mach ich gerade wieder alles komplett falsch, aber kann mir jemand sagen was genau ich falsch mache? Weil ich steh gerade ein bisschen auf dem Schlauch...
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Problem mit realloc()
[Re: WretchedSid]
#258697
04/01/09 15:35
04/01/09 15:35
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
sources = (ADDIN_SOURCE *)realloc(sources,sources_all*sizeof(ADDIN_SOURCE));
greetings
K-Duke
Last edited by KDuke; 04/01/09 15:36.
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Problem mit realloc()
[Re: KDuke]
#258698
04/01/09 15:45
04/01/09 15:45
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
OP
Expert
|
OP
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
 scheiße bin ich dämlich >.< Vielen vielen Dank KDuke, ohne dich würde ich wahrscheinlich noch in einem Jahr davor sitzen...
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Problem mit realloc()
[Re: WretchedSid]
#258773
04/02/09 03:18
04/02/09 03:18
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Naja... shit happens :P Aber ich kann dir auch GSVector von pegamode empfehlen.... echt praktisch das Plugin ^^ GSVector PluginFalls du es benutzt vergess nicht dich zu bedanken und Credits in deinem Projekt zu geben  mit freundlichen Grüßen K-Duke
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Problem mit realloc()
[Re: KDuke]
#259096
04/03/09 20:57
04/03/09 20:57
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
OP
Expert
|
OP
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
Aktuell brauch ich das wohl eher nicht, aber ich könnte nochmal deine Hilfe gebrauchen Also realloc() und malloc() tun jetzt wie sie sollen, allerdings hab ich nach dem beenden des Programmes 3 unterschiedliche "Fehlermeldungen" (nur wenn ich die Funktion mit dem malloc Aufruf ausführe). Entweder, es funktionier alles problemlos Es kommt die "Acknex.exe hat ein Problem festgestellt und muss beendet werden" Fehlermeldung oder, es komm "Die Anweisung in "XxXXXXXX" verweist auf Speicher in "XxXXXXXX". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden. Woran kann das liegen?
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Problem mit realloc()
[Re: Saturnus]
#259222
04/04/09 20:34
04/04/09 20:34
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Vielleicht könntest du auch die Funktionen mal posten, in denen du malloc/realloc nutzt!?
mit freundlichen Grüßen K-Duke
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
Re: Problem mit realloc()
[Re: Saturnus]
#259370
04/05/09 17:48
04/05/09 17:48
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
OP
Expert
|
OP
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
Kombucha hatte recht, ich hab in einer Funktion außerhalb des Speichers geschrieben. Hab das jetzt so angepasst dass das nicht mehr geschieht und jetzt kommt diese Fehlermeldung auch nicht mehr. Thx an euch beide, ihr habt mir echt geholfen 
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Problem mit realloc()
[Re: WretchedSid]
#260327
04/10/09 08:28
04/10/09 08:28
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
OP
Expert
|
OP
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
Hab, wieder, ein Problem mit realloc und hoffe ihr könnt mir helfen. Kann es sein das man mit realloc/malloc Elemente in einem Struct nicht vergrößern kann? Ich nutze folgenden Code um beim Start einen Integer auf eine bestimmte (voher unbekannte) Größe zu bringen: town_ingame[id].town_goods.ware = (int *)malloc((Waren_all+1)*sizeof(int));
for(h=1;h<=Waren_all;h++)
{
town_ingame[id].town_goods.ware[h] = 0;
}
Die Structs sehen so aus: typedef struct
{
STRING* name;
VECTOR pos;
ENTITY* town_ent;
int town_handle;
int own;
int town_size;
int population;
int tax;
int good_for[3];
ENTITY* flag_ent;
PARTICLE* particle;
GOODS town_goods;
} TOWN;
TOWN *town_ingame;und typedef struct {
int geld;
int *ware[1];
} GOODS;allerdings stürzt dann beim Spielstart das Spiel mit folgender Fehlermeldung ab: "Crash in seed_with_veg" (wobei diese Funktion eigentlich gar nichts damit zu tun hat. Allerdings funktioniert alles ohne Probleme wenn ich das ganze so schreibe: town_ingame[id].town_goods.ware = 0; das ist jetzt aber natürlich nicht das was ich brauche. Ich kann auch mit Sicherheit sagen das Waren_all zu dem Zeitpunkt bereits einen Wert hat. Ich hoffe ihr versteht mein Problem und könnt mir helfen.
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Problem mit realloc()
[Re: WretchedSid]
#260334
04/10/09 09:14
04/10/09 09:14
|
Joined: Mar 2009
Posts: 112 Germany
KDuke
Member
|
Member
Joined: Mar 2009
Posts: 112
Germany
|
Das Problem liegt einfach darin, dass du die Klammern vergessen hast! Darüber solltest du den "->"-Operator anstatt "." benutzen, wenn du einen Pointer auf ein Strukt benutzt, was hier der Fall ist.
((town_ingame[id])->town_goods)->ware = (int *)malloc((Waren_all+1)*sizeof(int));
Kann jetzt sein, dass eines der Klammer-Paare unnötig ist, jedoch sollte es so gehen. mit freundlichen Grüßen K-Duke
Using A7 Free Click and join the 3dgs irc community! Room: #3dgs
|
|
|
|