sizeof相关内容

sizeof空结构在C中为0,在C++中为1,为什么?

可能的重复: C++ 中的空类 C 中空结构的大小是多少? 我在某处读到 C++ 中空结构的大小是 1.所以我想验证它.不幸的是,我将它保存为 C 文件并使用了 标头,我很惊讶地看到输出.是 0. 这意味着 struct Empty {};int main(void){printf("%d",(int)sizeof(Empty));} 在编译为 C 文件时打 ..
发布时间:2021-12-23 17:28:07 C/C++开发

从 C++ struct 字段获取单个字段的大小

简短版本是:我如何了解 c++ 字段的单个字段的大小(以位为单位)? 为了澄清,我正在谈论的领域的一个例子: struct 测试 {无符号字段1:4;//占用 4 位无符号字段2:8;//8 位无符号字段3:1;//1 位无符号字段4:3;//3 位无符号字段5:16;//16 个以上使其成为 32 位结构int normal_member;//普通结构变量成员,在我的系统上为 4 个字节 ..
发布时间:2021-12-23 17:25:50 C/C++开发

struct sizeof 结果不是预期的

我有一个这样定义的结构: typedef struct _CONFIGURATION_DATA {BYTE 配置指示符;ULONG32 波特率;BYTE 停止位;BYTE 奇偶校验;字节字长;字节流控制;字节填充;CONFIGURATION_DATA; 现在,据我估计,该结构体有 10 个字节长.但是,sizeof 报告它是 16 字节长?有人知道为什么吗? 我正在使用 Windows ..
发布时间:2021-12-23 17:15:03 C/C++开发

sizeof() 结构未知.为什么?

为什么我不能在简单的结构上使用 sizeof()? 例如: 私有结构FloatShortPair{公共浮动 myFloat;公开空头 myShort;};int size = sizeof(FloatShortPair);//CS0233 错误 CS0233:'FloatShortPair' 没有预定义的大小,因此 sizeof 只能在不安全的上下文中使用(考虑使用 System.Run ..
发布时间:2021-12-23 17:13:56 C#/.NET

如何找到结构的大小?

struct a{字符*c;字符 b;}; sizeof(a) 是什么? 解决方案 #include typedef struct { char* c;字符 b;} 一个;int main(){printf("sizeof(a) == %d", sizeof(a));} 我在 32 位机器上得到“sizeof(a) == 8".结构的总大小将取决于包装:在我的情况下,默认包装是 4,所 ..
发布时间:2021-12-23 17:12:01 其他开发

如果字符在 int 之后,为什么要添加填充?

比如有一个结构 结构体A{字符一个;国际我;}; 在这种情况下,我们有 [1 byte] + padding[3 byte] + int[4 byte] = 8. 现在让我们对上面的结构做一点更新, 结构体A{国际我;字符一个;}; 在这种情况下,char 在 int 之后,不需要添加填充字节,这意味着 sizeof(A) = 5 字节,但在这种情况下,我也得到了 8 字节的结果.为 ..
发布时间:2021-12-23 17:09:06 其他开发

C 结构体大小不一致

可能的重复: 如何找到结构的大小? Struct 的内存大小不同? 我正在使用以下结构进行网络通信,它在两者之间创建了许多不必要的字节. 它给出的大小与预期的 8 字节不同. struct HttpPacket {无符号字符 x1;联合{结构{无符号字符长度;未签名的短主机;无符号字符内容[4];} 数据包;无符号字符字节[7];无符号长数;} 即使我从联合中删除一个字段,以下 ..
发布时间:2021-12-23 17:05:07 C/C++开发

sizeof(struct) 返回意外值

这应该很简单,但我不知道去哪里寻找问题: 我有一个结构: 结构区域{上市:long long int x;long long int y;long long int 宽度;long long int 高度;无符号字符标度;}; 当我做 sizeof(region) 时,它给了我 40 当我期待 33 时. 有什么想法吗? (mingw gcc,赢得 x64 操作系统) ..
发布时间:2021-12-23 17:02:36 C/C++开发

C2070 - 操作数大小非法

以下代码对我来说很好: #include 模板 结构A{静态浮点 m_kA[];};模板 浮动 A::m_kA[] = {1.0f, 2.0f, 3.0f};int main(){printf("%d\n",sizeof(A::m_kA)/sizeof(A::m_kA[0]));返回0;} 但是当我用 VC9 编译时出现以下错误 error C2070: 'float []': 非法 ..
发布时间:2021-12-22 18:55:19 C/C++开发

sizeof() 一个向量

我有一个 vector> 数据结构(事务数据库),我想知道它的大小.当我对每个 set 使用 sizeof() 时,尽管集合包含 3、4 或 5 个字符,但大小为 24.后来,当我将 sizeof() 与 vector 一起使用时,> 大小是 12...我想这不是知道数据结构大小的方法.有什么帮助吗?谢谢. 解决方案 你想要 vector::size() 和 set::size(). ..
发布时间:2021-12-21 13:24:55 C/C++开发

C++:获取传递给函数的多维数组的行大小

我正在尝试编写一个函数来打印多维数组的内容.我知道列的大小,但不知道行的大​​小. 编辑:由于我没有说清楚,传递给这个函数的数组不是动态分配的.大小在编译时已知. 我正在使用 3x2 阵列对其进行测试.这是它的功能: void printArrays(int array1[][2], int array2[][2]) {for (int i = 0; i 显然,这仅在我知道“i" ..
发布时间:2021-12-21 13:14:37 C/C++开发

为什么每次使用 malloc 时都会收到警告?

如果我在代码中使用 malloc: int *x = malloc(sizeof(int)); 我从 gcc 得到这个警告: new.c:7: 警告:函数‘malloc’的隐式声明new.c:7:警告:内置函数‘malloc’的隐式声明不兼容 解决方案 您需要添加: #include 该文件包含内置函数 malloc 的声明.如果你不这样做,编译器会认为你想定义你自己的名为 mal ..
发布时间:2021-12-18 23:06:30 其他开发

函数指针的大小有什么保证?

在 C 中,我需要知道结构体的大小,其中包含函数指针.我可以保证在所有平台和架构上都可以: void* 的大小与函数指针的大小相同吗? 函数指针的大小不会因其返回类型而不同吗? 函数指针的大小不会因参数类型的不同而不同吗? 我认为所有这些答案都是肯定的,但我想确定一下.对于上下文,我正在调用 sizeof(struct mystruct),仅此而已. 解决方案 来自 C99 ..
发布时间:2021-12-13 13:01:46 其他开发

C++ 中带有 int 、函数、虚函数的 sizeof 类?

这是一道在线C++试题,已经做完了. #include使用命名空间标准;A级{};B级{国际我;};C级{无效的 foo();};D级{虚空 foo();};E级{内部我;虚空 foo();};F级{国际我;无效的 foo();};G级{无效的 foo();国际我;无效的 foo1();};H级{内部我;虚空 foo();虚空 foo1();};int main(){cout ..
发布时间:2021-12-09 21:35:34 C/C++开发

QObject 到底有多重?

我最近发布了一个关于 QObject 在典型使用场景中的开销的问题,但不幸的是,该问题与另一个在技术上没有回答问题的问题重复. 更糟糕的是,礼貌地冲过去结束我的问题的仓促的“撒玛利亚人"打断了我在运行了几次测试后刚刚完成打字的答案.由于我无法再在原始问题中发布我的发现,我将其发布在这里,以便其他可能需要该信息的人可以使用. 解决方案 很多人都暗示 QObject 很重,但并不清楚它到 ..
发布时间:2021-12-09 17:10:05 C/C++开发

“sizeof(函数名)"返回什么?

示例代码: int main(void){printf ("size = %d\n", sizeof(main));} 返回值 sizeof 应用于函数名是什么,例如 main? 解决方案 C 标准禁止它 - 当使用 gcc -pedantic 编译时,它会产生 'sizeof' 对函数的无效应用输入警告. 但是gcc编译它并返回1 for sizeof(main),它不是函数指 ..
发布时间:2021-12-07 23:13:27 其他开发

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

C 标准允许指向不同类型的指针具有不同的大小,例如sizeof(char*) != sizeof(int*) 是允许的.然而,它确实要求如果一个指针被转换为 void* 然后转换回它的原始类型,它必须与它的原始值进行比较.因此,从逻辑上讲,sizeof(void*) >= sizeof(T*) 对于所有类型T,对吗? 在当今使用的大多数常见平台(x86、PPC、ARM 和 64 位变体等)上 ..
发布时间:2021-12-02 08:09:24 其他开发