alguien que estaba esperando podría explicar por quéSi bool es una macro para int, ¿por qué es un tamaño diferente?
#include <stdbool.h>
printf("size of bool %d\n", sizeof(bool));
printf("size of int %d\n", sizeof(int));
salidas a
size of bool 1
size of int 4
He mirado en http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html lo que parece indicar que bool es esencialmente una macro para _Bool que, cuando se define como true o falso, es realmente solo una macro para una constante entera. Si es un número entero, ¿por qué no tiene el mismo tamaño?
Lo estoy preguntando porque nos llevó demasiado tiempo depurar un programa para el que no asignamos suficiente memoria.
Simplemente curioso: si un 'bool' es * más pequeño * de lo que esperaba, ¿cómo no asignó suficiente memoria? – detly
@detly Bueno, para ser sincero, no estamos seguros. Teníamos una matriz de 'bool' que siempre producía una falla de segmentación hasta que multiplicamos el' malloc (x * sizeof (bool)) 'por' malloc (4 * x * sizeof (bool)) 'Podría haber sido algo completamente diferente, pero eso resolvió el problema y me llevó a esta pregunta. – NickO
¿Declaraste un 'bool *'? No tenemos mucho que seguir sin el código, aunque probablemente sea una pregunta aparte (y parece que usted ha estado asignando para 'bool' pero escribiendo objetos más grandes en el almacenamiento asignado. – birryree