zeiger probleme
-
halle mein name ist André
ich bin neu hier und hab gleich mal ein problem und hoffe ihr könnt mir weiter helfen
:psigned char *String2IntFX(char *string) { int i,stl = strlen(string) -1; signed char *intFX=(signed char*)malloc(sizeof(signed char)*(stl+5)); for(i=0;i<=stl;i++) { intFX[i]=string[stl-i]-48; } intFX[i]=-1; return intFX; }hier konvertiere ich ein string in ein arrey.. das geht auch alles so wie ich das möchte..
nun das problem:
die malloc anweisung benötigt zeit welche ich nich verschwenden möchte.
denn wenn ich diese funktion ein paar hundert mal auf rufe wo der arry auch immer größer wird dauert das...
nun hab ich mir gedacht ich ich mache aus *intFX(den da oben dekl. zeiger) eine global variable so das ich ihn nur einmal speicher verschafen muss..
doch wenn ich das dan so wie vorher verwende:
signed char *test=(signed char*)malloc(sizeof(signed char)*1000000); signed char *test1=(signed char*)malloc(sizeof(signed char)*1000000); test=String2IntFX("255"); test1=String2IntFX("2");zeigt test auch da hin wo test1 hinzeigt...
und das soll ja nicht sein...wenn intFX nicht global ist geht alles..
kann mir jemand helfen ??
-
was denn nun?
c? C++?und btw...string ist ein schlecht gewählter name für deinen übergabeparameter
-
nee anders, änder bitte den vaiablenname string in irgendetwas anderes (außer double,long,int und die anderen datentypen und reservierten wörter....)
-
Und anstelle eine globale Variable zu nutzen solltest du der Funktion lieber ein Schreibziel mitgeben:
char* String2IntFx(char* data, char* target) { int i,len=strlen(data)-1; for(i=0;i<=stl;i++) { target[i]=string[stl-i]-48; } target[i]=-1; return target; } ... String2IntFx("255",test); String2IntFx("2",test1);PS: Abgesehen davon, daß der Beitrag eine Etage höher hingehört, siet die Funktion grauenhaft aus - sizeof(char), bunte Mischung aus unspezifizierten char und signed char, ... Und was die Funktion überhaupt berechnet, ist mir atm schleierhaft.