Witam, mam problem z malutkim programikiem, mianowicie:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void costam(char * in, char * co)
{
char * temp = NULL;
size_t len = strlen(co);
temp = (char*)malloc(len);
memset(temp, 0, len);
strcpy(temp, co);
free(in);
in = temp;
printf("a wewnatrz funkcji: %s\n", in);
}
int main()
{
char *x = (char*)malloc(sizeof(char) * 20);
strcpy(x, "blablablablablablab");
printf("%s\n",x);
costam( x, "nowenowenowenowenowenowenowe");
printf("%s",x);
free(x);
return 0;
}
Na ekranie pokazuje się:
blablablablablablab
a wewnatrz funkcji: nowenowenowenowenowenowenowe
└►e
Jak widac w mainie przydzielilem pamiec i wpisalem do niej cstring "blablablablablablab". Nastepuje wypisanie, a potem w funkcji cos tam, wpisuje do niej cstring "nowenowenowenowenowenowenowe". Wewnątrz tej funkcji przydzielam pamięć większa i zwalniam stara. Wskaznik nakierowuję na nowa pamiec. Dlaczego to nie dziala? Przeciez do funkcji przekazuję jej adres, więc powinienem mieć możliwosc zmiany wewnatrz funkcji(de facto mam, tylko ze wychodza krzaki). Gdy uzywam funkcji realloc wszystko dziala. Proszę o wyjasnienie mi tego zagadnienia.