问题标签 [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++ - C memset 似乎不会写给每个成员
我写了一个小坐标类来处理 int 和 float 坐标。
然后在 main() 我做:
但是根据我的 MSVC 调试器,只有 x 值设置为 0,y 值没有改变。我以前从未在模板类中使用过 sizeof(),这可能是造成问题的原因吗?
c++ - 初始化后可以调整 C++ 数组的大小吗?
我正在学习编程,而 C++ 是我的第一语言。不要费心用指针给我看——我还不明白它们,在我有更多空闲时间来做这件事之前不会打扰。
我被分配了一个合并排序算法(我没有上课——只是和几个帮助我的朋友一起学习),解释了算法,但没有解释实现。我想重写它,以便它适用于奇数和偶数整数。我尝试添加此代码:
这样我就可以使用相同的整数来迭代两个后续数组。sizeof(farray) 显示为 16 个字节或 4 个整数。所以它没有调整大小。我想知道 - 初始化后是否可以调整数组大小?
编辑:我将如何实现向量?我不明白如何在循环中使用迭代器来迭代和复制值。
c - 在 Objective-C 中检查对象的大小
我试图找到一个objective-c对象的大小。我正在使用类似于:
这只是给了我指针的大小。
我究竟做错了什么?
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
谁能给我解释一下?
提前致谢。
编辑:感谢您的回答!我现在得到了。
c - 是否有任何平台指向不同类型的指针具有不同的大小?
C 标准允许指向不同类型的指针具有不同的大小,例如sizeof(char*) != sizeof(int*)
是允许的。但是,它确实要求如果指针转换为 avoid*
然后又转换回其原始类型,则它必须与原始值进行比较。因此,从逻辑上讲,sizeof(void*) >= sizeof(T*)
对于所有类型T
,正确吗?
在当今使用的大多数常见平台(x86、PPC、ARM 和 64 位变体等)上,所有指针的大小都等于本机寄存器大小(4 或 8 字节),无论指向的类型如何。是否有任何深奥或嵌入式平台,其中指向不同类型的指针可能具有不同的大小?我特别询问数据指针,尽管我也想知道是否存在函数指针具有异常大小的平台。
我绝对不是在问 C++ 的指向成员的指针和指向成员函数的指针。它们在通用平台上具有不同寻常的大小,甚至可以在一个平台内变化,具体取决于指向类的属性(非多态、单继承、多继承、虚拟继承或不完整类型)。
c - 32 位与各种 64 位数据模型的 sizeof(size_t) 是多少?
在 64 位系统上,sizeof(unsigned long)
取决于系统实现的数据模型,例如 LLP64(Windows)上是 4 个字节,LP64(Linux 等)上是 8 个字节。sizeof(size_t)
应该是什么?它是否像数据模型一样因数据模型而异sizeof(long)
?如果是这样,怎么做?
参考:
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
c - 操作内存时是否需要乘以sizeof(char)?
当使用 malloc 并进行类似的内存操作时,我可以依赖 sizeof( char ) 始终为 1 吗?
例如,我需要为 N 个类型的元素分配内存char
。乘以sizeof( char )
必要:
还是我可以依靠 sizeof( char ) 始终为 1 并跳过乘法
我完全理解sizeof
在编译期间进行评估,然后编译器甚至可能编译出乘法,因此性能损失将是最小的并且很可能为零。
我主要询问代码清晰度和可移植性。类型是否需要这种乘法char
?
c - unsigned char * 指向的内存区域的大小是多少?
好的,我知道之前有人问过这个问题,但搜索后我找不到正确的答案。
我需要将缓冲区(无符号字符 *)转换为 base64,我使用的 base64 函数作为参数:
其中int srclen
是src
字符串的长度。
我的问题是,如何获得缓冲区的长度。不,它不是空终止的。不,我不想要sizeof(BYTE)
. 我只需要知道要传递什么,srclen
这样我就可以将该缓冲区转换为base64。
编辑:
这是一些显示我在做什么的代码:
c# - .NET 反射:确定类字段的大小
目标:以编程方式确定类字段的大小(以字节为单位)。例如,请参阅下面的评论...