×

变量名存储在哪里

变量名存储在哪里(java 变量名存储在哪里)

admin admin 发表于2024-01-06 06:17:38 浏览33 评论0

抢沙发发表评论

大家好,关于变量名存储在哪里很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java 变量名存储在哪里的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

java 变量名存储在哪里

JAVA里不必考虑这东西,因为JAVA的堆栈和指针都是程序自动完成的,简单的说一下吧。 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 对int a = 3: 编译器首先会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址

c语言中变量是怎样存储的

这个依照你的变量或者对象的申明位置和方式不同而不同的。一般来说,全局变量,静态变量,首先分配,分配在静态存储空间。局部变量,在申明的是后分配,分配在栈上。作用域结束后系统会自动回收。动态申请的空间,在执行分配函数时分配,分配在堆上,又程序员自己写释放代码手动释放空间。

static变量存储在哪里

该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;  静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的 代码区,全局数据区,堆区,栈区 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将 static int n; //定义静态全局变量 改为 int n; //定义全局变量 程序照样正常运行。 的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处: 静态全局变量不能被其它文件所用; 其它文件中可以定义相同名字的变量,不会发生冲突;

变量的名称和函数的名称是如何储存在计算机中的

如果是源码 那就是是你的字符串如果你说的中编译后的,就不存在变量名了.函数名也只有一部分存在.就是外调用的(类似于API)在exe’dll 文件内会有一个名称列表,也就是函数名.和对应的地址.这个只是在编译时用的.装和内存后也都换成了内存地址.所以 函数名 也只是临时用的.用于调整动态库的偏移 变量名 在exe dll 里根本不存在,都是在堆栈,寄存器,内存 中放着 .如果你想真的了解 你还是找下相关资料 .变量/函数 这你可以 查下编译原理(这个一般是用汇编说明的.你也有这个基础)dll exe 内的函数 你可以查下 PE文件结构.应该就差不多了吧

变量名与数据内容的存储关系

char 数据类型是占一字节,所以:sizeof(a) = 1个字节保存数据的内存地址(对于 32 为系统)是32位,即 4 字节,所以:sizeof(&a) = 4个字节变量名存储的地址,是在栈中。知道数据内容和变量名是分开存储:最好顺便将堆、栈的概念弄清楚,举个例子,如:仓库,可以分为管理区和储存区,当然,管理区可以存放标识货物保存在储存区位置的标识牌,也可以保存货物。char a; ,相当于在管理区(栈)中的一个位置吧保存了一件货物,&a 相当于获取这件货物在管理区的位置(内存地址)。当然,管理区也要编号。char *pa 相当于在管理区(栈)申请一个位置,用于存放货物指示牌,pa = new char,相当于在指示牌 pa 上标明这个货物储存区的位置。栈(内存)是静态的,编程时就确定,当然内存释放不用人工干预。堆(内存)是动态的,在程序执行是由你写的代码申请的,当然内存释放由你决定。

c++中变量地址存放在变量名中,那变量名的地址在哪呢

这不是一言两语可以说清的。你需要理解CPU指令、汇编、windows操作系统与C++编译器的运作原理。对于int n = 5;首先要说明n的地址更有可能是0x00410FC0,靠近顶端地址是存放内核数据的编译器编译它时,产生类似mov ,5的指令,其中并没有出现n,n只是编译时供编译器识别的名字,是一个高级语言抽象出来的概念,在真实执行的程序中并不存在n,至于n的地址是0x00410FC0还是其他的什么,这是由连接器(linker)决定的,连接器把全局变量放在.exe文件中,执行.exe文件时全局变量在类似0x00430000左右的地址。局部变量在栈上,一般地址为0x00120000左右。地址0xffbffb0c并不需要一个地址去存放它,因为在最后产生.exe文件它自己知道它需要的一个值存放在什么地址,所以就在它的二进制代码中把0xffbffb0c硬编码进来了 --------------------------------------------------------要加深理解,请参看我的另两篇回答:***隐藏网址******隐藏网址***

c语言变量存储

在函数体中定义的变量通常是在栈上,用malloc,calloc,realloc等分配内存的函数分配得到的就是在堆上。在函数外部定义的变量(全局变量或静态外部变量)和在函数内部定义的static变量,其生存期就是程序运行的全过程,这些变量被存储在数据段(datasegment)中。在函数内部定义的auto变量(没有用关键字static定义的变量)的生存期从程序开始执行其所在的程序块代码时开始,到程序离开该程序块时为止。作为函数参数的变量只在调用该函数期间存在。这些变量被存储在栈(stack)中。

C语言变量的名称是怎么存在的,在内存中么

编写C语言源程序时可以理解成通过变量名访问值,但程序必须编译成可执行的二进制文件方能运行,这时都是对内存进行存取,已不存在变量名了。

关于本次变量名存储在哪里和java 变量名存储在哪里的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。