在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态 存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量 的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应 用程序去控制,一般一 ...
分类:
其他好文 时间:
2017-09-29 16:33:18
阅读次数:
143
C++ 程序中的内存分为两个部分: 1.new 运算符 检查 new 运算符是否返回 NULL 指针,并采取以下适当的操作: 注意: 关于malloc()函数:malloc() 函数在 C 语言中就出现了,在 C++ 中仍然存在,但建议尽量不要使用 malloc() 函数。 new不仅分配了内存,还 ...
分类:
编程语言 时间:
2017-09-29 14:56:10
阅读次数:
180
对于一个class object来说,我们需要多少内存才能表现出来,大致分为3类,这里在前面文章有内存图 (1)非静态数据成员的综合大小,这也符合了c++对象模型的结构 (2)填充字节,就是我们所说的,内存对齐 (3)若存在虚函数,则还会产生一个为了支持virtual的指针指向虚函数表 (这里也可以 ...
分类:
其他好文 时间:
2017-09-26 23:39:17
阅读次数:
220
昨天看了一篇关于《Java后端程序员1年工作经验总结》的文章,其中有一段关于String和StringBuffer的描述,对于执行结果仍然把握不准,趁此机会也总结了下JVM内存模型。 1、JVM运行时数据区域 关于JVM内存模型之前也了解过一些,也是看过就忘,好记性比如烂笔头,记下来吧。参考此文章h ...
分类:
其他好文 时间:
2017-09-16 20:50:23
阅读次数:
281
最近在看书,看到了对象在内存中的存储方式。 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针、 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指针是什么,指向的什么? 从网上找也没有找到,最后往下看,书中有些描述。说下我的理解: 类型对象指针: ...
// // main.m // Set方法的内存管理 #import #import "Person.h" #import "Room.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 1.创建两个对象 Person... ...
分类:
其他好文 时间:
2017-08-25 12:33:04
阅读次数:
125
// Room.h #import @interface Room : NSObject @property int no;// 房间号 @end // Room.m #import "Room.h" @implementation Room - (void)dealloc { NSLog(@"%s... ...
分类:
其他好文 时间:
2017-08-23 18:17:23
阅读次数:
151
1. 内存结构;在逻辑上内存可以分成四段:栈空间段、堆空间段、数据段、代码段; 栈空间段空间小,CPU访问速度快,特点是后进先出。常用来存储一些占用长度固定、占用空间小的数据类型的内存段。如一些整形、浮点型等; 对空间段空间大小并不固定,可以动态扩张或者缩减,用于存放长度可变或者占用内存比较大的数据 ...
分类:
Web程序 时间:
2017-08-20 14:08:55
阅读次数:
290
1.大对象:所谓的大对象是指需要大量连续内存空间的java对象,最典型的大对象就是那种很长的字符串以及数组,大对象对虚拟机的内存分配就是坏消息,尤其是一些朝生夕灭的短命大对象,写程序时应避免。 2.长期存活的对象:虚拟机给每个对象定义了一个对象年龄(Age)计数器,如果对象在Eden出生并经过第一次 ...
分类:
编程语言 时间:
2017-08-08 17:56:01
阅读次数:
166
基本的数据类型 一、int,整形 a、创建方式 n1 = 123 n2 = int (123) b、int内部优化 默认-5~257的数共用一份地址 》 id(对象内存地址) = id(对象或变量名) c、长度限制 32 -2**31~2**31-1 64 -2**63~2**63-1 在py3里面 ...
分类:
编程语言 时间:
2017-08-05 23:38:09
阅读次数:
246