精华内容
下载资源
问答
  • 内存中的数据存储单元是由一个一...如果要往内存中存储数据的话,就至少要使用各一个字节,也就是8个二进制位,这个时候,一个字节可以表示256中数据(2的8次方),存储的数据就会多一些了 2.重点:内存的存储单元

    内存中的数据存储单元是由一个一个的二进制组成的,每个二进制只能存储0 和1

    每个二进制只能表示2个数据 

    科学家为了更加方便存储更多的数据,吧内存中8个二进制分为一组,叫做一个字节,作为存储数据的最小基本单元

    如果要往内存中存储数据的话,就至少要使用各一个字节,也就是8个二进制位,这个时候,一个字节可以表示256中数据(2的8次方),存储的数据就会多一些了


    2.重点:内存的存储单元是由一个一个的二进制组成的,每一个二进制只能存储1或0,讲8个进制位分成1组,作为存储数据的最小单位。

    单位换算:8bit = 1字节(byte)

    1024= 1kb;

    1024kb = 1M;

    1024M = 1G;

    3。我们在声明变量的时候,并不是开辟一块空间,而是想系统再内存中,申请一块指定的连续字节空间

    int 4个字节

    float 4字节

    double 8字节

    char 1个字节

    4.sizeof 运算符 

    计算变量,常量再内存中占用的字节数

    sizeof(数据类型/变量名/常量)

    1231.1231f 是float性  4个自己

    1231.1231  double的 8个字节

    char 变量占用1个字节

    char类型的常量是占用4个字节


     int len = sizeof(1231.1231);

        printf("len===%d\n",len);

    结果是8

    int len = sizeof(int);

        printf("len===%d\n",len);



    展开全文
  • 1.下列程序中,结构体变量n所占内存字节数是(答案为6?) union U {  char s[4];   int i;  long l; }; struct A {  int c;  union U u; }a; 2.若有下面的说明和定于: struct test {  int m1;...

    有朋友问:

    1.下列程序中,结构体变量n所占内存字节数是(答案为6?)

    union U
    {
            char s[4];        
            int i;
            long l;
    };
    struct A
    {
            int c;
            union U u;
    }a;

    2.若有下面的说明和定于:
    struct test
    {
            int m1;char m2;float m3;
            union uu{ char u1[5];int u2[2];} ua;

    }myaa;
    则sizeof(struct test)的值是(答案为12?)

    3.在16位的PC机上使用c语言,若有如下定义:
    struct data
    {
            int i;
            char ch;
            double f;
    }b;
    则结构变量b占用内存的字节数是(答案为11?)

    答复:
    如果你这是考试用题,建议你采用这个方式来计算:
    1、假设是在16位IBM-PC机上计算所占用内存的字节数,决定了各类型的宽度;
    2、union(共用体)变量的所占用内存的字节数为变量类型定义的变量的最大宽度变量;
    3、如果有数组要考虑数组的宽度(比如char[3]肯定小于int[2],cha[5]就按5个字节算,因为大于了int[2]);
    4、结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和;
    5、结构体里有结构体也要按照上面的方法计算。

    那么,由于假设16位IBM-PC机,所以:
    char:1字节、short:2字节、int:2字节、long:4字节、long long(即long long int):4字节、float:4字节、double:8字节、long doubule:10字节
    这样你就好计算了:
    题目1:union U u; u的宽度为最大char s[4];的4个字节,int c;2个字节。所以结果为6个字节。
    题目2、题目3你自己应该就会算了吧?

    有个问题还是要补充一下,在现在我们用的IDE在实际环境中,由于为了实现更快寻址和达到性能更优的原因,会有本机宽度和字节对齐的情况发生,所以你在你具体应用中会有一些不同情况的出现。另外,long double占用10字节空间,但有的编译器并不认可10字节,还是8字节,比如在VC++6.0下,用sizeof(long double)测出来的值仍然是8。所以我强调了第1点假设是在16位IBM-PC机上,而且估计你提的这几个问题都是考试用的,所以就按我上面说的方法去计算就可以。

     

    展开全文
  • php怎么查看一个变量占用内存

    千次阅读 2019-03-26 11:19:01
    事例: ... echo ...memory_get_usage ...返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。...大概了解10000个元素的整数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。
    事例:
    php版本为7.2
    <?php
    echo memory_get_usage() , '<br>';
    $start = memory_get_usage();
    $a = Array();
    for ($i=0; $i<1000; $i++) {
    $a[$i] = $i + $i;
    }
    $mid = memory_get_usage();
    echo memory_get_usage() , '<br>';
    for ($i=1000; $i<2000; $i++) {
    $a[$i] = $i + $i;
    }
    $end = memory_get_usage();
    echo memory_get_usage() , '<br>';
    echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
    echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
    echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
    echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
    输出是:
    389336
    418056
    442632
    argv:28.72bytes
    argv:24.576bytes
    Memory:28.046875k
    Memory:24k
    

    返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。

    大概了解1000个元素的整数数组需要占用 28k 内存,平均每个元素占用 28 个字节

    memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP
    运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

    <?php
    $start = memory_get_usage();
    $a = array_fill(0, 10000, 1);
    $mid = memory_get_usage(); //10k elements array;
    echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';
    echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
    $b = array_fill(0, 10000, 1);
    $end = memory_get_usage(); //10k elements array;
    echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';
    echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
    得到:
    argv:54.5792byte
    argv:54.5784byte
    
    argv:39.736byte
    Memory:388.046875k
    argv:39.736byte
    Memory:388.046875k
    

    大概了解10000个元素的整数数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。

    展开全文
  • 判断结构体变量所占字节数

    千次阅读 2018-07-29 21:19:14
    1,结构体总长度一定是最长字节数的整数倍,double除外,若出现double还是除它之外的最大类型的字节数的整数倍,double还是按8字节算 2,每个成员偏移量一定是改成员长度的整数倍 eg #include &lt;stdio.h&...

    规则

    1,结构体总长度一定是最长字节数的整数倍,double除外,若出现double还是除它之外的最大类型的字节数的整数倍,double还是按8字节算

    2,每个成员偏移量一定是改成员长度的整数倍

    eg

    
    #include <stdio.h>
    
    struct student
    {
        char name[20];
        int a;
        short b;
    };
    
    int main()
    {
        printf("%d\n", sizeof(struct student));
        return 0;
    }

     

    嵌套结构体所占字节数示例

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct AA
    {
        int a;
        char b;
    };
    struct student
    {
        short c;
        struct AA aa;
    
        char sex;
        
    };
    
    int main()
    {
        printf("%d\n", sizeof(struct student));
     
        return 0;
    }
    

    说明:

    1,struct AA aa,占8个字节; 然后将其整体带入struct student{....}结构体中, short 补两个字节 4+8+1=13, 需要再补三个字节使其为4的倍数

    展开全文
  • 文章目录32位编译器:32位系统下指针占用4字节64位编译器:64位系统下指针占用8字节内存对齐原理1.什么是内存对齐2.结构体内存对齐规则(请记住三条内存规则(在没有#pragam pack宏的情况下) 32位编译器:32位系统下...
  • C语言结构体所占用字节数如何计算

    万次阅读 多人点赞 2015-11-18 18:47:56
    结构体的数据类型的有点多我们就不啰嗦了,直接来看相同数据结构体的几种书写的格式吧。  格式一:  ... int B;  05. short C;  06.}Phone;  格式二:  01.struct tagPhone  02.{  03.
  • 已知整形变量内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少? 用共用体方法 union share { int b; char arr[10];//char型数组内每个空间...
  • 如何深入理解Lua数据结构内存占用? ** 导语 Lua底层数据结构内存动态分配,一般情况下不太好估算内存占用。腾讯游戏学院专家Ross在本文剖析lua常见数据结构string和table的底层实现原理,并从中找到一般性的...
  • 查找了好久的错误,才发现原来两端的结构体看似相同,但其两端结构体占用字节数是不一样的。才导致了服务器端不能正常的显示出全部内容。 大概情况是这样的,client端定义结构体如下: typedef struct _u64{ ...
  • C/C++中数据大小、字节对齐、内存占用总结

    千次阅读 多人点赞 2020-05-21 19:09:58
    sizeof()操作符,求占用空间,对数组而言大小为 type大小 * 数据个; int a[] = {1,2,3,4,5} sizeof(a) = 20 sizeof(&a) = 4 特殊的:在string时,由于字符串本质上就是自带‘\0’结尾的 char[] 数组,而...
  • 结构体内数据变量内存分配详解

    千次阅读 2015-03-12 09:31:52
    原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节要从4的整数倍地址...
  • 我们知道,为了提高内存寻址的效率,很多处理器体系结构为特定的数据类型引入 了特殊的内存对齐需求。不同的系统和编译器,内存对齐的方式有所不同,为了满足 处理器的对齐要求,可能会在较小的成员后加入补位,...
  • sizeof是C/C++中的一个operator,其作用就是返回一个对象或者类型所占的内存字节数(byte)。返回值是size_t,在头文件stddef.h中定义。 2、用法 sizeof的用法有一下3种: (1)sizeof(object);//即sizeof(对象) (2...
  • 3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束释放。 4另外还有一个专门放常量的地方
  • 变量各类型所占的字节数

    千次阅读 2014-07-24 09:39:41
    b) 一个指向整型的指针(A pointer to an integer)  c) 一个指向指针的的指针,它指向的指针是指向一个整型(A pointer to a pointer  to an integer)  d) 一个有10个整型的数组(An array of 10 ...
  • 我觉得在冯诺依曼体系结构里,CPU和内存是最重要的设备。如果没有CPU和内存,...我想你对内存存储的计算已经熟练于心,a变量占用内存多少字节b变量占用内存多少字节。但是你有没有深入思考过,为什么我们用的...
  • BSS段属于静态内存分配,程序结束后静态变量资源由系统自动释放。 (2)数据段:数据段通常指用来存放程序中已初始化的全局边的一块内存区域。数据段也属于静态内存分配。 (3)代码段:也叫文本段,通常指用来...
  • 一、程序的内存分配 一个由C/C++编译的程序占用内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — ...
  •  一个由c/C++编译的程序占用内存分为以下几个部分 1、栈区(stack)— —由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员...
  • 变量内存分配

    千次阅读 2012-07-03 10:41:05
    一个由C/C++编译的程序占用内存分为以下几个部分  1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。  2、堆区(heap) — 一般由程序员分配...
  • 变量内存分配:内存对齐

    千次阅读 2010-11-08 11:19:00
    数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。#include 2 using namespace std; 3 4 struct X1 5 { 6 int i;//4个字节...
  • Java 对象占用内存大小

    千次阅读 2018-01-22 13:35:25
    如果想要了解java对象在内存中的大小,必须先要了解java对象的结构。 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding) java 对象...
  • 结构体在内存占用的空间

    千次阅读 2018-06-03 16:54:32
    之前对结构占用内存一直很迷,下面就举个例子,到底是按照哪个变量类型计算内存?应该怎样计算才是正确的呢? struct str { char a; int b; float b; double d; }; 这个结构体占用的内存是多少呢? 运行...
  • GCC结构体内变量对齐

    千次阅读 2015-12-27 12:23:28
    结构体内变量 分配的原则很简单:编译器从结构体第一个变量开始按顺序编译,用一个固定大小的内存,默认是4(#pragma pack(n) 指令 中的n)的倍数,遇到一个变量的时候,当前n中空余空间足够,就不重新分配,如果这...
  • java String 最长长度和占用内存大小

    千次阅读 2019-10-25 11:22:01
    String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE, String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535. 二 介绍 1、String的内部实现 通过一个字符数组来维护字符序列,...
  • PHP数组实际占用内存大小的分析

    千次阅读 2012-03-28 18:28:04
    http://blog.csdn.net/hguisu/article/details/7376705我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。...下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:<?php
  • C++ 结构体所占字节数

    千次阅读 2017-09-06 12:13:27
    在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上...
  • 全局变量和局部变量内存里的区别?堆和栈 转:一、预备知识—程序的内存分配 一个由c/C++编译的程序占用内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,299
精华内容 39,319
关键字:

则结构变量b占用内存的字节数是