空隙的大小是多少?

这句话会产生什么?


void *p = malloc(sizeof(void));

编辑:问题的扩展。


如果sizeof(void)在GCC编译器中产生1,则分配1字节的内存,指针p指向该字节,p ++会增加到0x2346吗?假设p为0x2345。我说的是p,而不是* p。


眼眸繁星
浏览 528回答 3
3回答

交互式爱情

类型void没有大小;那将是一个编译错误。出于同样的原因,您不能执行以下操作:void n;编辑。令我惊讶的是,sizeof(void)实际上在GNU C中确实可以编译:$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc -w - && ./a.out&nbsp;1但是,在C ++中,它不会:$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc++ -w - && ./a.out&nbsp;<stdin>: In function 'int main()':<stdin>:1: error: invalid application of 'sizeof' to a void type<stdin>:1: error: 'printf' was not declared in this scope

胡说叔叔

如果使用的是GCC,并且没有使用删除编译器特定扩展的编译标志,sizeof(void)则为1。GCC具有执行此操作的非标准扩展。通常,void它是不完整的类型,您不能将sizeof用于不完整的类型。
打开App,查看更多内容
随时随地看视频慕课网APP