问题标签 [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.

0 投票
3 回答
2934 浏览

c++ - 为什么 sizeof 不解析结构成员?

我知道这sizeof是一个编译时计算,但这对我来说似乎很奇怪:编译器可以采用类型名称或表达式(从中推断出类型)。但是你如何识别一个类中的类型呢?似乎唯一的方法是传递一个表达式,这看起来很笨重。

0 投票
5 回答
1666 浏览

c - 如何将 C 全局数组的大小放入为使用 GCC 编译的 AVR 架构编写的汇编程序中?

我有一个.c包含以下内容的文件。

我有一个.S文件,我想在其中执行以下操作。

for 的第二个参数cpi必须是立即数,而不是位置。但不幸sizeof()的是C运营商。这两个文件都被编译为单独的目标文件,然后链接在一起。

如果我这样做avr-objdump -x file.c,除其他外,我会得到缓冲区的大小。所以它已经在目标文件中可用。

如何在编译时访问汇编文件中缓冲区的大小?

0 投票
2 回答
409 浏览

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 是指向函数的指针。

这个问题是关于标准要求的,不是你自己的意见。请提供链接、章节编号和标准引用

0 投票
3 回答
24607 浏览

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

0 投票
5 回答
23922 浏览

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 字节值的隐式转换?

0 投票
3 回答
744 浏览

c - 为指向结构的指针分配空间

在另一个帖子链接文本中

我正在尝试对结构做同样的事情,但是我的 sizeof 运算符有问题,所以在整数情况下,我这样做了:

在 struct 案例中,我这样做了:

但我得到错误: sizeof 对不完整类型的 struct TEST 的无效应用。

有什么想法吗?谢谢。

0 投票
5 回答
37407 浏览

c - 在 malloc 的内存上使用 sizeof()

可能重复:
关于 malloc 和 sizeof 的新手问题

我正在尝试将字符串读入程序。当我注意到字符串有时被损坏时,我尝试了以下代码:

根据我的程序,即使我为它分配了 100 个字节,它的大小mallocated也是。8因此,每当我尝试存储超过 8 个字节的字符串时,第 8 个字节之后的所有内容有时都会消失。为什么会发生这种情况,我该如何预防?

0 投票
8 回答
21890 浏览

c++ - 如何确定 C++ 中字符串数组的大小?

我试图简单地打印出数组中包含的值。

我有一个名为“结果”的字符串数组。我不知道它到底有多大,因为它是自动生成的。

根据我的阅读,您可以通过以下方式确定数组的大小:

这个对吗?因为对于我的程序,sizeof(result) = 16 和 sizeof(result[0]) = 16 所以代码会告诉我我的数组大小为 1。

但是,这似乎不正确,因为如果我手动打印出这样的数组值:

...然后我看到了我正在寻找的结果值。该数组的长度/大小超过 100 个以上。

似乎确定数组的大小/长度应该非常简单......所以希望我只是在这里遗漏了一些东西。

我有点 C++ 新手所以任何帮助将不胜感激。

0 投票
4 回答
814 浏览

c++ - sizeof(...) = 0 或 C++ 模板中的条件变量声明

假设我有这样的事情:

现在,每个PoorMansTuple 我可能会浪费多达19 个字节。

问题是:

1)有没有办法创建一个大小为 0 的类?

2)有没有办法有条件地定义一个变量?像这样的东西:

谢谢!

预先使用黑魔法宏。

我在 MacOSX 上使用 g++。

0 投票
4 回答
1915 浏览

c - solaris sparc 和 solaris x86 之间的结构体大小差异

我正在将我们的应用程序从 solaris sparc 移植到 solaris x86,我遇到了这两种架构之间结构的大小差异。例如; 我有一个像

sizeof(mystructT)当我在 solaris X86 中写入时,它返回 396

当我在 solaris SPARC 中写入sizeof(mystructT)时,它返回 400

我只是好奇,为什么会发生这样的事情?

编辑:两个 Solaris 系统都是 32 位的。