函数调用模型 基本原理 实际上就是不断的从一个内存跳到另一个内存。 函数调用变量传递分析 一个主程序有n函数组成,c++编译器会建立有几个堆区?有几个栈区? 答:一个程序只有一个堆区和一个栈区。 函数嵌套调用时,实参地址传给形参后,C++编译器如何管理变量的生命周期? 上一级的变量在下一级调用中可以... ...
分类:
编程语言 时间:
2018-04-23 11:10:37
阅读次数:
139
# 栈区/堆区/常量区- 操作内存的栈区速度很快;栈区存储空间地址是连续的- 操作内存的常量区速度很快;内存空间只开辟一次;- 操作内存的堆区速度相对栈区和常量区要慢些;堆区内存空间不连续,需要寻址`` // 存储在栈区` int num = 10;` // 存储在常量区 ` NSString *s ...
分类:
移动开发 时间:
2018-04-21 13:33:07
阅读次数:
187
一 局部变量存放在栈区中,函数调用结束后释放内存空间。 二 malloc(memory allocate)动态分配的内存在堆区,需要调用free手动释放。 通过malloc申请的内存,才能用free释放。局部变量用free释放,会报错。 ...
分类:
编程语言 时间:
2018-04-16 18:22:51
阅读次数:
198
1、java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2、堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令); jvm只有一个heap区,被所有线程共享,不存放基本类型和对象引用,只存放对象本身。 堆的优劣势 ...
分类:
编程语言 时间:
2018-04-12 15:36:50
阅读次数:
200
一.栈区: 1.局部变量的生活在栈区(不管函数还是主函数内) 2.生命周期: ①定义变量的时候开始(开辟内存空间) ②所在作用域结束的时候消亡(被系统回收) 注:存在回收不及时的问题 二.堆区 1.动态申请空间 注:在不用的时候 需要手动释放 不会随着作用域的结束释放掉 2.两个相关函数: ①调用函 ...
分类:
其他好文 时间:
2018-04-06 21:23:52
阅读次数:
144
前言 静态属性和方法必须用static修饰符 静态属性和非静态属性的区别: 1、在内存中存放位置不同 所有带static修饰符的属性或者方法都存放在内存中的方法区 而非静态属性存放在内存中的堆区 2、出现时机不同 静态属性或方法在没创建对象之前就已经存在 而非静态属性在创建对象之后才存在 3、静态属 ...
分类:
编程语言 时间:
2018-04-01 18:55:10
阅读次数:
173
一切都是二进制;指令,数据;英文单词来开发(写源代码),必须要配套一个翻译;分类处理:提高效率。蔬菜,洗洁精,卫生纸,烧烤;分类摆放;1001个字节2002个总结4个总结拿4个字节就跑,然后指令集对比解析方式不一样;专门存储指令区数据区内存四区:指令区:代码区;数据区栈区堆区内存四区:数据:123451234512345123451234512345取的字节数量(数据类型来告诉)相同字节(1个),
分类:
其他好文 时间:
2018-03-30 17:26:27
阅读次数:
165
一、类加载机制 类加载器将类的.class文件中的二进制数据读入到内存中,将其放在方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问 ...
分类:
编程语言 时间:
2018-03-29 19:09:30
阅读次数:
161
三、类是如何被加载的? 什么是类加载机制? 将.class中的二进制数据读到内存,然后整理成类的元数据写到方法区;然后根据类的元数据结构在堆内存中创建类的实例对象; 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang. ...
分类:
其他好文 时间:
2018-03-29 13:34:54
阅读次数:
133
一、内存布局 1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等,其操作方法类似数据结构中的栈。 2、堆区(heap):一般由程序员分配释放,与数据结构中的堆毫无关系,分配方式类似于链表。 3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,在程序编译时 ...
分类:
编程语言 时间:
2018-03-24 00:48:05
阅读次数:
188