Einzelnen Beitrag anzeigen
  #22  
Alt 22-01-2008, 08:25
Benutzerbild von klaus52
klaus52 klaus52 ist offline
cf#t~Wrd

 
Registriert seit: Dec 2000
Ort: Mannheim
Beiträge: 7.654
klaus52 ist ein C...
klaus52 eine Nachricht über ICQ schicken
OL Nick: klaus52
Style: Dune
Ich hab da grad auch mal ein C-Problem... ich denke mal das passt hier rein, auch wenns kein C++ ist ... vermutlich ists für den Ausschnitt eh wurscht

Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (void) {

	char *instructions[1];
	int n;

 	for(n=0;n<1;n++) {
        	instructions[n]=(char*) malloc(sizeof(char)*70);  //malloc size for chars of maximum length 70
       }

	instructions[0] = "Welcome to...";
	
	
	free(instructions[0]);
}
Tja, das free klappt nicht, sondern verursacht böse Fehlermeldungen, beim ausführen... :
Code:
klaus52@klaus52-lap:~/workspace/cs349-ui$ ./free
*** glibc detected *** /home/klaus52/workspace/cs349-ui/free: free(): invalid pointer: 0x0804859c ***
+ Backtrace und Memory Map...

Tja, bis jetzt hatte ich meine Anwendung munter for mich her gespielt, ohne auf Speicher zu achten... dachte aber, dass das vielleicht doch nciht die beste Idee iist, aber ich bekomm das free einfach nicht hin, und bin gerade eigentlich nur noch am blöd rumprobieren - was ein Zeichen dafür ist, dass ich wohl besser ins Bett sollte... falls mir trotzdem jemand weiterhelfen könnte, wär das toll!

P.S.: Da mach ich die ganzen letzten Stunden rum, und finde gerade nach dem abschicken per Zufall die Lösung...
strcpy(instructions[0], "Welcome to..." );
statt
instructions[0] = "Welc..."

Ich hab jetzt zwar noch nicht geschaut, was strcpy wirklich macht, und wieso das dann klappt, und anders ist... aber immerhin: Es klappt ... warum les ich bei gelegenheit nach... falls jemand dei Muße hat es zu erklären, hab ich aber auch nichts gegen
P.P.S: Okay, durch die direkte uweisung veränder ich die Adresse auf die instruction[0] zeigt, durch strcpy, kopier ich den String dahin wohin instruction[0] vorher zeigt ... den Platz, den ich mit kmalloc reserviert habe... klingt soweit logisch

Geändert von klaus52 (22-01-2008 um 08:46 Uhr).
Mit Zitat antworten