问题标签 [sizeof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么 sizeof 不解析结构成员?
我知道这sizeof
是一个编译时计算,但这对我来说似乎很奇怪:编译器可以采用类型名称或表达式(从中推断出类型)。但是你如何识别一个类中的类型呢?似乎唯一的方法是传递一个表达式,这看起来很笨重。
c - 如何将 C 全局数组的大小放入为使用 GCC 编译的 AVR 架构编写的汇编程序中?
我有一个.c
包含以下内容的文件。
我有一个.S
文件,我想在其中执行以下操作。
for 的第二个参数cpi
必须是立即数,而不是位置。但不幸sizeof()
的是C
运营商。这两个文件都被编译为单独的目标文件,然后链接在一起。
如果我这样做avr-objdump -x file.c
,除其他外,我会得到缓冲区的大小。所以它已经在目标文件中可用。
如何在编译时访问汇编文件中缓冲区的大小?
c - sizeof(void*) 和 sizeof(function_type_ptr*) 相等
sizeof(void*) 和 sizeof(function_type_ptr*) 相等
sizeof(void*) 和 sizeof(function_type_ptr*) 必须相等吗?C(C90,C99)标准要求吗?
function_type_ptr 是指向函数的指针。
这个问题是关于标准要求的,不是你自己的意见。请提供链接、章节编号和标准引用
c - 是否存在 sizeof(char) != 1 或至少 CHAR_BIT > 8 的机器?
是否有机器(或编译器),在哪里sizeof(char) != 1
?
C99 标准是否规定sizeof(char)
在标准合规性实施上必须恰好为 1?如果是的话,请给我章节号和引文。
更新:
如果我有一台机器(CPU),它不能寻址字节(最小读取为 4 个字节,对齐),但只有 4-s 字节(uint32_t
),这台机器的编译器可以定义 sizeof(char)
为 4 吗?sizeof(char)
将为 1,但 char 将有 32 位(CHAR_BIT
宏)
更新 2: 但 sizeof 结果不是字节!它是 CHAR 的大小。char 可以是 2 字节,或者(可能是)7 位?
更新3:
好的。所有机器都有sizeof(char) == 1
。但是什么机器有CHAR_BIT > 8
?
c - 在 C 中,为什么 sizeof(char) 为 1,而 'a' 是 int?
我试过
printf("%d, %d\n", sizeof(char), sizeof('c'));
并得到1, 4作为输出。如果一个字符的大小是 1,为什么'c'
给我 4?我想这是因为它是一个整数。因此,当我这样做char ch = 'c';
时,当它被分配给 char 变量时,是否会发生从 4 字节值到 1 字节值的隐式转换?
c - 为指向结构的指针分配空间
在另一个帖子链接文本中
我正在尝试对结构做同样的事情,但是我的 sizeof 运算符有问题,所以在整数情况下,我这样做了:
在 struct 案例中,我这样做了:
但我得到错误: sizeof 对不完整类型的 struct TEST 的无效应用。
有什么想法吗?谢谢。
c - 在 malloc 的内存上使用 sizeof()
可能重复:
关于 malloc 和 sizeof 的新手问题
我正在尝试将字符串读入程序。当我注意到字符串有时被损坏时,我尝试了以下代码:
根据我的程序,即使我为它分配了 100 个字节,它的大小mallocated
也是。8
因此,每当我尝试存储超过 8 个字节的字符串时,第 8 个字节之后的所有内容有时都会消失。为什么会发生这种情况,我该如何预防?
c++ - 如何确定 C++ 中字符串数组的大小?
我试图简单地打印出数组中包含的值。
我有一个名为“结果”的字符串数组。我不知道它到底有多大,因为它是自动生成的。
根据我的阅读,您可以通过以下方式确定数组的大小:
这个对吗?因为对于我的程序,sizeof(result) = 16 和 sizeof(result[0]) = 16 所以代码会告诉我我的数组大小为 1。
但是,这似乎不正确,因为如果我手动打印出这样的数组值:
...然后我看到了我正在寻找的结果值。该数组的长度/大小超过 100 个以上。
似乎确定数组的大小/长度应该非常简单......所以希望我只是在这里遗漏了一些东西。
我有点 C++ 新手所以任何帮助将不胜感激。
c++ - sizeof(...) = 0 或 C++ 模板中的条件变量声明
假设我有这样的事情:
现在,每个PoorMansTuple 我可能会浪费多达19 个字节。
问题是:
1)有没有办法创建一个大小为 0 的类?
2)有没有办法有条件地定义一个变量?像这样的东西:
谢谢!
预先使用黑魔法宏。
我在 MacOSX 上使用 g++。
c - solaris sparc 和 solaris x86 之间的结构体大小差异
我正在将我们的应用程序从 solaris sparc 移植到 solaris x86,我遇到了这两种架构之间结构的大小差异。例如; 我有一个像
sizeof(mystructT)
当我在 solaris X86 中写入时,它返回 396
当我在 solaris SPARC 中写入sizeof(mystructT)
时,它返回 400
我只是好奇,为什么会发生这样的事情?
编辑:两个 Solaris 系统都是 32 位的。