Zum Inhalt springen

Probleme bei der Speicherreservierung


TDM

Empfohlene Beiträge

Ich habe ein Problem, dass ich einen 3-fachen Pointer anlegen möchte - nur leider geht das mit new irgentwie nicht - sobald ich etwas in die Variable schreiben will, gibt er mir eine fehlermeldung aus.


int main(int argc, char* argv[])

{

	int i = 0;

	char*** pppcztstr = new char**;


	strcpy(pppcztstr[0][1],  IE_URL_01);

	strcpy(pppcztstr[1][1],  IE_URL_01);

	strcpy(pppcztstr[2][1],  IE_URL_02);

	strcpy(pppcztstr[3][1],  IE_URL_04);

	strcpy(pppcztstr[4][1],  IE_URL_05);

	strcpy(pppcztstr[5][1],  IE_URL_06);

	strcpy(pppcztstr[6][1],  IE_URL_07);

	strcpy(pppcztstr[7][1],  IE_URL_08);

	strcpy(pppcztstr[8][1],  IE_URL_09);

	strcpy(pppcztstr[9][1],  IE_URL_10);

	strcpy(pppcztstr[10][1], IE_URL_11);



	while(i<10)

	{

	 _execv(IE_PATH, pppcztstr[i]);

	}

	return 0;

}

Kann mir jemand sagen warum ?

Btw: die IEs sind alles char[]s

Link zu diesem Kommentar
Auf anderen Seiten teilen

hihi, fast das gleiche hab ich letztens schonmal gesehn'.

du hast nur den speicher für einen pointer auf einen char-pointer reserviert, mehr nicht.

in C ist es soweit ich weiss nicht vorgesehen den speicher so dynamisch zu verwalten, wie du es willst. wenn du es wirklich dynamisch haben willst, solltest du es in c++ z.b. mit der vector class machen. oder mit listen. gibt mehrere möglichkeiten.

in C wuerde ich vorschlagen, dass du ein array mit char-pointern anlegt und dann fuer jedes feld im array speicher allokierst. und in jeden feld dann den pointer auf dein allokierten speicher ablegst.

etwa so:


char *mein_array[10];


for(i = 0; i < 10; i++)

{

  mein_array[i] = new char[8];

}

bei der deklarierung von mein_array erhältst du ein char*-array mit 10 feldern.

in der schleife werden diese 10 felder mit pointern auf char-arrays mit 8 feldern gefüllt.

ich hoffe ich konnte dir helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich habe nicht gesgagt, dass man nicht so viele dimensionen anlegen kann. du kannst du viele dimensionen machen wie du willst.

es ging darum, dass er ein array nicht einfach in ein-dimesionaler richtung verlaengern kann.

er muss den speicher fuers erste array vorher allokieren.

und in den feldern des arrays dann die pointer auf den speicher ablegen, den man dann ggf. in einer schleide neu allokiert

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...