一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数 ...
分类:
其他好文 时间:
2017-06-04 22:47:13
阅读次数:
206
1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。 全局变量或静态变量,放在数据段, 局部变量放在栈中, 用new产生的对象放在堆中, 内存分为4段,栈区,堆区,代码区,全局变量区 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始 ...
分类:
其他好文 时间:
2017-06-01 17:49:55
阅读次数:
131
动态内存管理 动态对象(堆对象)是程序在执行过程中在动态内存中用new运算符创建的对象。 因为是用户自己用new运算符创建的。因此也要求用户自己用delete运算符释放,即用户必须自己管理动态内存。 计算机内存数据区常有三种分区。即静态数据区、堆区、桟区。 1.程序在编译时就为静态变量和静态对象分配 ...
分类:
其他好文 时间:
2017-05-23 19:46:29
阅读次数:
215
Java内存管理 一.内存分类 分为如下四类: 堆区(Heap) 栈区(Stack) 数据区(Data segment) 代码区(Code segment) 二.作用 代码区(Code segment):存放程序的代码 数据区(Data segment):存放静态变量和字符串常量 栈区(Stack) ...
分类:
编程语言 时间:
2017-05-17 14:11:34
阅读次数:
216
本篇是接着设计模一:观察者模式的续写。 为什么要写这一篇呢: java在main函数里new出的对象都是局部变量,而用C++ 在main函数里new出来的都是 动态分配到堆区的。 那么可不可以按照java的思路来写呢。 这就是写本篇的原因了:C++完全可以按照java的思路来实现(使用引用) 附上代 ...
分类:
其他好文 时间:
2017-05-07 12:57:14
阅读次数:
205
一、静态全局变量 理解static关键字之前首先回顾一下C/C++程序的在内存中的分配情况。从低地址到高地址依次分为:代码区、全局数据区、堆区、栈区。函数之外的全局变量和静态变量(包括全局变量和静态变量)都存储在全局数据区,堆区有程序员自己通过malloc,new申请内存,栈区存放函数内部的临时变量 ...
分类:
编程语言 时间:
2017-05-07 01:06:31
阅读次数:
244
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与 ...
分类:
其他好文 时间:
2017-05-04 21:49:10
阅读次数:
227
转自:堆和栈的区别(转过无数次的文章) 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 一般由程序员分配释放, 若程序员不 ...
分类:
编程语言 时间:
2017-05-01 17:10:07
阅读次数:
226
1.C++程序的内存格局分四个区: 1.全局数据区/静态区/字符串常量:全局变量、进态数据、常量 2.代码区:所有类成员函数代码、非成员函数代码 3.栈区/堆栈:为运行函数而分配的局部变量、函数参数、返回数据、返回地址 4.堆区:malloc/free或new delete,从堆中分配和释放内存块 ...
分类:
其他好文 时间:
2017-04-30 23:06:58
阅读次数:
174
运行时数据区包括:虚拟机栈区,堆区,方法区,本地方法栈,程序计数器 虚拟机栈区 :也就是我们常说的栈区,线程私有,存放基本类型,对象的引用和 returnAddress ,在编译期间完成分配。 堆区 , JAVA 堆,也称 GC 堆,所有线程共享,存放对象的实例和数组, JAVA 堆是垃圾收集器管理 ...
分类:
编程语言 时间:
2017-04-29 13:42:26
阅读次数:
157