Miałem nadzieję, że ktoś może wyjaśnić dlaczegoJeśli bool jest makrem dla int, dlaczego ma inny rozmiar?
#include <stdbool.h>
printf("size of bool %d\n", sizeof(bool));
printf("size of int %d\n", sizeof(int));
wyjścia do
size of bool 1
size of int 4
Szukałem na http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html co wydaje się wskazywać, że bool jest zasadniczo dla _Bool makro, które po ustawieniu wartości true lub false, tak naprawdę jest tylko makrem dla stałej liczb całkowitych. Jeśli jest liczbą całkowitą, dlaczego nie ma tego samego rozmiaru?
Pytam, ponieważ zajęło nam zbyt dużo czasu, aby debugować program, dla którego nie przydzieliliśmy wystarczającej ilości pamięci.
Po prostu ciekawy - jeśli "bool" jest * mniejszy * niż się spodziewałeś, w jaki sposób nie przydzieliłeś wystarczającej ilości pamięci? – detly
@detly Cóż, szczerze mówiąc nie jesteśmy pewni. Mieliśmy tablicę 'bool', która zawsze powodowała błąd segmentacji aż do pomnożenia' malloc (x * sizeof (bool)) 'malloc (4 * x * sizeof (bool))' To mogło być coś całkowicie inny, ale to rozwiązało problem i doprowadziło mnie do tego pytania. – NickO
Czy zadeklarowałeś 'bool *'? Nie mamy wiele do zrobienia bez kodu, chociaż to prawdopodobnie byłoby oddzielne pytanie (i brzmi to tak, jakbyś przydzielił dla 'bool', ale pisanie większych obiektów do przydzielonego magazynu. – birryree