Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/06/23 11:29
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
7 registered members (3run, miwok, AndrewAMD, Quad, TipmyPip, fairtrader, 1 invisible), 637 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Problem mit realloc() #258694
04/01/09 15:20
04/01/09 15:20
Joined: Apr 2007
Posts: 3,751
Canada
WretchedSid Offline OP
Expert
WretchedSid  Offline 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:
Code:
typedef struct
{
	int version_;
	STRING* name_;
	STRING* path_;
} ADDIN_SOURCE;

ADDIN_SOURCE *sources;


und dann habe ich probiert so neuen Speicher anzufordern:
Code:
sources = (sources *)realloc(sources,sources_all*sizeof(sources));

(sources_all ist eine Variable)

das funktioniert aber nicht, so funktioniert das allerdings:
Code:
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
K
KDuke Offline
Member
KDuke  Offline
Member
K

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 Offline OP
Expert
WretchedSid  Offline OP
Expert

Joined: Apr 2007
Posts: 3,751
Canada
cry 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
K
KDuke Offline
Member
KDuke  Offline
Member
K

Joined: Mar 2009
Posts: 112
Germany
Naja... shit happens :P

Aber ich kann dir auch GSVector von pegamode empfehlen.... echt praktisch das Plugin ^^

GSVector Plugin

Falls du es benutzt vergess nicht dich zu bedanken und Credits in deinem Projekt zu geben laugh

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 Offline OP
Expert
WretchedSid  Offline OP
Expert

Joined: Apr 2007
Posts: 3,751
Canada
Aktuell brauch ich das wohl eher nicht, aber ich könnte nochmal deine Hilfe gebrauchen laugh

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: WretchedSid] #259190
04/04/09 17:58
04/04/09 17:58
Joined: Dec 2008
Posts: 271
Saturnus Offline
Member
Saturnus  Offline
Member

Joined: Dec 2008
Posts: 271
Möglicherweise versuchst du, einen NULL-Pointer zu dereferenzieren:

int *ptr = 0;
*ptr = 123;

Oder du schreibst außerhalb des von dir allozierten Speichers:

int *array = malloc(10 * sizeof(int));
array[10] = 123; // Indizes nur von 0..9

Dies kann natürlich einfach durch einen Fehler im Code passieren.
Es kann jedoch auch an sizeof() liegen. sizeof() funktioniert erst ab Version 7.67 richtig - davor musste man ein Typecast zu int verwenden, um innerhalb von Ausdrücken ein korrektes Ergebnis zu erhalten: n * (int)sizeof(datentyp).

Re: Problem mit realloc() [Re: Saturnus] #259222
04/04/09 20:34
04/04/09 20:34
Joined: Mar 2009
Posts: 112
Germany
K
KDuke Offline
Member
KDuke  Offline
Member
K

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 Offline OP
Expert
WretchedSid  Offline 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 smile


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 Offline OP
Expert
WretchedSid  Offline 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:
Code:
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:
Code:
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

Code:
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
K
KDuke Offline
Member
KDuke  Offline
Member
K

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.
Code:
((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
Page 1 of 2 1 2

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1