作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个语句会产生什么结果?
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/
我是一名优秀的程序员,十分优秀!