问题标签 [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 投票
7 回答
4152 浏览

c++ - C memset 似乎不会写给每个成员

我写了一个小坐标类来处理 int 和 float 坐标。

然后在 main() 我做:

但是根据我的 MSVC 调试器,只有 x 值设置为 0,y 值没有改变。我以前从未在模板类中使用过 sizeof(),这可能是造成问题的原因吗?

0 投票
6 回答
28506 浏览

c++ - 初始化后可以调整 C++ 数组的大小吗?

我正在学习编程,而 C++ 是我的第一语言。不要费心用指针给我看——我还不明白它们,在我有更多空闲时间来做这件事之前不会打扰。

我被分配了一个合并排序算法(我没有上课——只是和几个帮助我的朋友一起学习),解释了算法,但没有解释实现。我想重写它,以便它适用于奇数和偶数整数。我尝试添加此代码:

这样我就可以使用相同的整数来迭代两个后续数组。sizeof(farray) 显示为 16 个字节或 4 个整数。所以它没有调整大小。我想知道 - 初始化后是否可以调整数组大小?

编辑:我将如何实现向量?我不明白如何在循环中使用迭代器来迭代和复制值。

0 投票
6 回答
36738 浏览

c - 在 Objective-C 中检查对象的大小

我试图找到一个objective-c对象的大小。我正在使用类似于:

这只是给了我指针的大小。

我究竟做错了什么?

0 投票
9 回答
4686 浏览

c - 为什么 short 在 C 中的结构中存储为 4 个字节?

我有以下两个结构:

问题是 sizeof(Content) 返回 160。该结构由 11 个短裤、6 个整数、76 个字符、7 个浮点数、1 个双精度数组成,总共增加了 158 个字节。我数了三遍,还是有2个字节的差别。

我写了一小段代码来打印结构中每个变量的位置,突然我发现float wlen需要 4 个字节。我的代码如下:

输出如下:

编译器是 MSVC8,未定义 UNICODE,未定义其他宏。是x86。

我尝试在 gcc 版本 3.4.4 中编译相同的代码,输出是相同的。 Sizeof short content.wlen: 4

谁能给我解释一下?

提前致谢。

编辑:感谢您的回答!我现在得到了。

0 投票
7 回答
5632 浏览

c - 是否有任何平台指向不同类型的指针具有不同的大小?

C 标准允许指向不同类型的指针具有不同的大小,例如sizeof(char*) != sizeof(int*)是允许的。但是,它确实要求如果指针转换为 avoid*然后又转换回其原始类型,则它必须与原始值进行比较。因此,从逻辑上讲,sizeof(void*) >= sizeof(T*)对于所有类型T,正确吗?

在当今使用的大多数常见平台(x86、PPC、ARM 和 64 位变体等)上,所有指针的大小都等于本机寄存器大小(4 或 8 字节),无论指向的类型如何。是否有任何深奥或嵌入式平台,其中指向不同类型的指针可能具有不同的大小?我特别询问数据指针,尽管我也想知道是否存在函数指针具有异常大小的平台。

我绝对不是在问 C++ 的指向成员的指针和指向成员函数的指针。它们在通用平台上具有不同寻常的大小,甚至可以在一个平台内变化,具体取决于指向类的属性(非多态、单继承、多继承、虚拟继承或不完整类型)。

0 投票
4 回答
146743 浏览

c - 32 位与各种 64 位数据模型的 sizeof(size_t) 是多少?

在 64 位系统上,sizeof(unsigned long)取决于系统实现的数据模型,例如 LLP64(Windows)上是 4 个字节,LP64(Linux 等)上是 8 个字节。sizeof(size_t)应该是什么?它是否像数据模型一样因数据模型而异sizeof(long)?如果是这样,怎么做?


参考:

维基百科上的 64 位数据模型

0 投票
5 回答
2073 浏览

c - 为什么用两个参数调用 sizeof 运算符?

我最近遇到了一些看起来像这样的代码:

var类型在哪里)

我很惊讶地看到操作员似乎有两个参数sizeof。快速浏览 ISO/ANSI C99 标准并没有发现任何秘密。我无法想出任何允许逗号的语法阅读。

搜索 Google 代码,我能够在一些 PPC 代码中找到这种语法的示例

这是一些 PPC 特定的语法吗?这是什么意思?

编辑:事实证明,我正在查看的内容以及链接代码都是WindRiver Diab 编译器特有的语法:

sizeof(类型,int-const):

如果 int-const 为 0 ,则sizeof返回类型的字节大小。

如果 int-const 为 1 sizeof返回类型的对齐方式。

如果 int-const 为 2,则sizeof返回一个整数常量,指定类型的类型。在Diab C/C++ 用户指南中查找“sizeof 运算符”以 获取值。

哇,他们真的超载了sizeof运算符的含义。

EDIT2:完整的文档在这里:http ://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432

0 投票
8 回答
5219 浏览

c - 操作内存时是否需要乘以sizeof(char)?

当使用 malloc 并进行类似的内存操作时,我可以依赖 sizeof( char ) 始终为 1 吗?

例如,我需要为 N 个类型的元素分配内存char。乘以sizeof( char )必要:

还是我可以依靠 sizeof( char ) 始终为 1 并跳过乘法

我完全理解sizeof在编译期间进行评估,然后编译器甚至可能编译出乘法,因此性能损失将是最小的并且很可能为零。

我主要询问代码清晰度和可移植性。类型是否需要这种乘法char

0 投票
4 回答
1211 浏览

c - unsigned char * 指向的内存区域的大小是多少?

好的,我知道之前有人问过这个问题,但搜索后我找不到正确的答案。

我需要将缓冲区(无符号字符 *)转换为 base64,我使用的 base64 函数作为参数:

其中int srclensrc字符串的长度。

我的问题是,如何获得缓冲区的长度。不,它不是空终止的。不,我不想要sizeof(BYTE). 我只需要知道要传递什么,srclen这样我就可以将该缓冲区转换为base64。

编辑

这是一些显示我在做什么的代码:

0 投票
2 回答
2578 浏览

c# - .NET 反射:确定类字段的大小

目标:以编程方式确定类字段的大小(以字节为单位)。例如,请参阅下面的评论...