Załóżmy, że chcę zdefiniować strukturę reprezentującą długość wektora i jego wartości jako:
struct Vector{
double* x;
int n;
};
Teraz przypuśćmy, że chcę zdefiniować wektor y i przydzielić mu pamięć.
struct Vector *y = (struct Vector*)malloc(sizeof(struct Vector));
Moje wyszukiwania w Internecie pokazują, że powinienem przydzielić pamięć dla x osobno.
y->x = (double*)malloc(10*sizeof(double));
Ale wydaje się, że przydzielam pamięć dla y-> x dwa razy, jeden podczas przydzielania pamięci dla y, a drugi podczas przydzielania pamięci dla y-> x, i wydaje się, że jest to marnowanie pamięci. Byłoby bardzo wdzięczne, gdybyśmy wiedzieli, co naprawdę robi kompilator i jaki byłby właściwy sposób inicjalizacji zarówno y, jak i y-> x.
Z góry dziękuję.
malloc()
w C. Nigdy nie zrozumiem, dlaczego wszyscy czują taką potrzebę. :(