Hallo Leute,
ich glaube ich habe ein grundlegendes Verständnisproblem was Speicherreservierung unter C angeht.
Erstmal meinen Code (testprog.c):
Und die Ausgabe:
Wie schreibe ich in den reservierten Speicher? Wenn ich ein Array (also mit konstanter Länge) in die Funktion übergebe funktioniert es. Zeigt der zeiger nach Aufruf von malloc auf die falsche Stelle? Oder liegt das Problem an ganz anderer Stelle?
Viele Grüße
ich glaube ich habe ein grundlegendes Verständnisproblem was Speicherreservierung unter C angeht.
Erstmal meinen Code (testprog.c):
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void stringTest(char const* src, char* dst){
char *sptr = malloc(sizeof(char)*((strlen(src)*2)+1));
char c;
do{
c = *src++;
*sptr++ = c;
*sptr++ = ' ';
}while(c);
dst = malloc(sizeof(char)*(strlen(sptr)+1));
strcpy(dst, sptr);
free(sptr);
}
int main(void){
char *destWord;
stringTest("TestString", destWord);
printf("%s\n",destWord);
return 0;
}
Und die Ausgabe:
Code:
# gcc -Wall testprog.c -o testprog
# ./testprog
testprog in free(): warning: modified (chunk-) pointer
Speicherschutzverletzung(core dumped)
Wie schreibe ich in den reservierten Speicher? Wenn ich ein Array (also mit konstanter Länge) in die Funktion übergebe funktioniert es. Zeigt der zeiger nach Aufruf von malloc auf die falsche Stelle? Oder liegt das Problem an ganz anderer Stelle?
Viele Grüße