Celem mojego programu jest odczytanie pliku i wydrukowanie słowa o maksymalnej liczbie występów, a także liczba wyrażeń. Ale mam problemy z malloc
i jego składnia. Jest to struktura, która malloc
odnosi się do:W jaki sposób używasz obiektu malloc do przydzielania pamięci dla struktury?
struct Word_setup {
char word[max_length];
int count;
};
Ta sekcja moim głównym pomógł mi dowiedzieć się, że to był mój błąd:
printf("Pre-Allocation Test");
struct Word_setup *phrase;
phrase = (struct Word_setup *) malloc(SIZE);
if (phrase == NULL)
{printf("Failure allocating memory"); return 0;}
Wydaje się tylko do wydrukowania, Pre-Allocation Test
, a następnie zamarza. Jak już mówiłem, nie jestem pewien, jak rozwiązać ten problem, ale go wyizolowałem.
* Incase zastanawiasz się co SIZE
jest:
#define SIZE (sizeof(phrase))
Edit:
Dla tych ciekaw wersji kompilatora/OS/etc .: Windows 7 64bit , GCC 4.9.2
Jeśli chcesz uzyskać więcej informacji Po prostu daj mi znać.
'#define SIZE (sizeof (* fraza))' – BLUEPIXY
[W języku C nie należy rzucać wynik 'malloc'] (http: // stackoverflow .com/questions/605845/do-i-cast-the-result-of-malloc/605858 # 605858) –
Naprawdę warto użyć 'type * ptr = malloc (sizeof (* ptr));' dzięki czemu możesz ' t do tego rodzaju błędu, nawet jeśli zmienisz "typ". – edmz