C_Java_内存级别
文章平均质量分 80
liupeng900605
这个作者很懒,什么都没留下…
展开
-
内存寻址 是否分段 形象描述
在早期的处理器中,比如8086/8088,最大可寻址1M空间,及20位宽度,而cpu的寄存器仅是16位的,也就是说一个cpu寄存器仅能寻址64k,这就产生了矛盾。所以要用两个寄存器来表示地址,看下面的例子:比如现在有这样一个问题,一个学校有50个班(1班,2班,...,50班),每个班有60名学生,怎么标记识别出每个学生呢?简单:把所有学生从1开始编号,到3000为止。每个号码代表一个学生即可转载 2012-05-01 19:11:08 · 824 阅读 · 0 评论 -
Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2012-05-01 23:11:57 · 750 阅读 · 0 评论 -
c语言中 字符数组与字符串字面值 字符数组与字符指针数组
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定转载 2012-05-24 13:31:04 · 1219 阅读 · 0 评论 -
C/C++编译过程简单理解
一直对这块内容都很怵头,因为它看不到摸不着,我们只能盯着最后编译链接之后的结果是成功或是失败,但是却不知道编译器内部是如何操作的; 每当编译器给出错误时我们都只是单纯的去处理错误,却不知道编译器是如何找出来的; 我们都很熟悉许多编译错误,但是却不大熟悉链接错误,对链接错误产生的原因也不大清楚。 今天,通过自己的努力终于对C/C++的编译过程有了个粗略的了解,毕竟不想转载 2012-06-10 15:45:46 · 693 阅读 · 0 评论 -
字节序 大端(Big-Endian) 小端(Little-Endian)
一、引子 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big-edian和little-endian。本文转载 2012-05-20 23:27:51 · 1527 阅读 · 0 评论 -
C语言数据类型 和 数据类型转换
1. C语言中的数据类型 C语言中的类型按其组成可以分为简单类型和构造类型,按是否预定义了类型名字和值集可以分为基本类型和非基本类型,按是否加了类型限定符可以分为限定类型和非限定类型。 ANSI C99标准中类型定义的BNF语法如下图。 说明:typedef可以定义新数据类型,如typedef long int FOUR_BYTE_INT,即定义了和long int一转载 2012-05-16 17:04:51 · 718 阅读 · 0 评论 -
C语言 数据类型转换 自动转换 vs 强制转换
C语言中强制数据类型转换的总结 [软件开发] 发布时间:2008-05-18 13:37:46 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。● 如果转载 2012-05-16 17:03:43 · 2124 阅读 · 0 评论 -
内存对齐的规则以及作用
首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include iostream> 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14转载 2012-05-03 01:29:37 · 4200 阅读 · 0 评论 -
C/C++ 内存布局详解(经典)
一个由C/C++编译的程序除了存放函数二进制代码的程序代码段(code段)外,数据占用的内存大致分为以下几个部分:1、栈区(stack) 存放局部变量、函数参数、返回数据、返回地址等。系统自动分配释放 ,其操作方式类似于数据结构中的栈。需要注意的有三点:第一, 退栈后销毁进栈时定义数据,请看下面这段。char* fun(char *p){char test[] =转载 2012-05-02 16:01:13 · 3128 阅读 · 0 评论 -
静态数组和动态数组 内存分布
数组是程序设计中是一个非常重要的概念。数组是一个用于收集大量类似数据的容器,以及其每一个元素能被相同处理过程迭代来处理的一个抽象体。创建数组一般有三种方式:全局/静态范围的数组,局部变量数组,申请堆空间来创建数组。其中,全局/静态范围的数组,以及局部变量属于静态数组。而申请堆空间来创建数组的属于动态数组。a[7]与p1_a[7]是一样的么?静态两维数组的排列顺序转载 2012-05-02 01:04:28 · 11704 阅读 · 1 评论 -
深度解析Java内存的原型及工作原理
本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。 一、java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM存储:硬盘等永久存储空间。 二、常量池(constant pool)转载 2012-07-06 13:30:33 · 1041 阅读 · 0 评论