gpt4 book ai didi

c++ - 空洞的大小是多少?

转载 作者:行者123 更新时间:2023-11-30 16:33:26 25 4
gpt4 key购买 nike

这个语句会产生什么结果?

void *p = malloc(sizeof(void));
<小时/>

编辑:问题的扩展。

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

最佳答案

类型void没有大小;那将是一个编译错误。出于同样的原因,您不能执行以下操作:

void n;

编辑。令我惊讶的是,执行 sizeof(void) 实际上确实在 GNU C 中编译:

$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc -w - && ./a.out 
1

但是,在 C++ 中却不然:

$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc++ -w - && ./a.out 
<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

关于c++ - 空洞的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49760993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com