C++结构体所占用字节数的疑惑

OrdinaryCoder OrdinaryCoder 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

#define USER_INFO_LENGTH (512) //用户信息数据长度;
#define INT_FACE_REC_MAX_PERSON_CNT (8)

typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;

typedef signed char int_least8_t;
typedef short int_least16_t;
typedef int int_least32_t;
typedef long long int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;
typedef unsigned long long uint_least64_t;

typedef struct _st_face_expression
{
uint8_t person_age;
uint8_t person_gender; //gender:0-female 1-male
uint8_t person_smile; //smile
uint8_t person_glasses; //glasses: 0-without glasses 1-with glasses
uint8_t person_beauty; //face score: bigger than 0
uint8_t person_race; //race:
} st_face_expression;

typedef struct _st_face_rec_person_info
{
uint32_t user_id;
uint32_t info_len;
uint8_t info_data[USER_INFO_LENGTH];
} st_face_rec_person_info;

typedef struct _st_face_rec_result_inner
{
uint8_t person_count; //number of person
uint8_t result_code[INT_FACE_REC_MAX_PERSON_CNT]; //status code of recognition result
st_face_rec_person_info person_info[INT_FACE_REC_MAX_PERSON_CNT]; //person information
st_face_expression person_expression[INT_FACE_REC_MAX_PERSON_CNT]; //expression information
uint8_t robotId;
char picPath[1024];
} st_face_rec_result_inner;

int main()
{
st_face_rec_result_inner face;
printf("count占:%d字节\r\n,res占:%d字节\r\n,info占:%d字节\r\n,expression占:%d字节\r\n, id占:%d字节\r\n,pic占:%d字节\r\n", sizeof(face.person_count), sizeof(face.result_code), sizeof(face.person_info), sizeof(face.person_expression), sizeof(face.robotId), sizeof(face.picPath));
printf("总字节数:%d\r\n", sizeof(face.person_count) + sizeof(face.result_code) + sizeof(face.person_info) + sizeof(face.person_expression) + sizeof(face.robotId) + sizeof(face.picPath));
printf("st_face_rec_result_inner字节数:%d", sizeof(st_face_rec_result_inner));
system("pause");
return 0;
}
为什么用sizeof计算st_face_rec_result_inner结构所占内存就是5248,而把组成这个结构各部分都用sizeof计算一下所占内存再求和就是5242 差了6个字节

...全文

相关推荐

Keil MDK-ARM各种数据类型占用的字节数 char short int float double

Keil MDK-ARM各种数据类型占用的字节数 char short int float double占用字节数,uCOS-II

weixin_362360865

C++中结构体占内存空间大小的判断

1、功能:   申明一个结构体,在以下四种情况下判断其占有的内存空间的大小;   2、程序及其代码   2.1 大化对其原则   代码一:结构体中不包含字符串变量的时候; // 结构体占内存空间的判断.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "String.h" #include "iostream" using namespace std;   int _tmain(int argc, _TCHAR* argv[]) {  typedef struct STUDENT_INFO  

weixin_38726712

C/C++基本数据类型所占字节数

关于这个基本的问题,很早以前很清楚了,C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。   所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):   sizeof(short int)&lt;=sizeof(int)   sizeof(int)&lt;=sizeof(long int)   short int至少应为16位(2字节)   long int至少应为32位。   

weixin_38689027

C++ 获取进程CPU占用率

主要介绍了C++ 获取进程CPU占用率,需要的朋友可以参考下

weixin_38679839

C++中 结构体和类的区别

学习了C++的面向对象,最常见的和写的就是类结构体,这篇文章主要简单介绍一下结构体和类的区别。  首先类是C++中面向对象独有的,但是C和C++中都有结构体,下面我们来看一下C和C++中结构体的区别。这里主要从封装、多态、继承、封装和访问权限几个方面来分析。

Jinbiao_lian
评论 8
收藏 已收藏
分享
返回顶部
OrdinaryCoder
C++ 语言 65,214 成员 250,514 内容