程序在向操作系统申请内存空间的时候,操作系统会扫描空闲块链表并从中取出一块足够大的分配,与之对应的算法有首次适应和最佳适应,顾名思义,首次适应就是把首次遇到的足够大的空闲块分配给应用程序,最佳适应就是扫描完空闲块链表把大小与申请空间最匹配的空闲块分配给应用..
分类:
其他好文 时间:
2014-10-08 00:38:57
阅读次数:
383
#include /*枚举1、某些特定类型取值是固定的几个值,所以需要枚举2、枚举定义时括号中的不是属性,而是值的符号。 3、改变值符号的顺序,影响使用(值发生变化,除非用赋值符号写死); 不会改变内存分配。 */ enum season{ spring, summer, autumn, win.....
分类:
其他好文 时间:
2014-10-08 00:07:54
阅读次数:
192
11.为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符。
显然,由于动态内存分配,绝对会有深浅拷贝的问题,要重写拷贝构造函数,使其为深拷贝,才能实现真正意义上的拷贝。这是我理解的关于要声明拷贝构造函数的原因。
而对于赋值操作符,类似的道理。
A b = a;
b = a;对于上述两种形式,上面调用的是复制构造函数,而下面才是 赋值操作符=。赋值与复制很相似,缺省的操作都是将...
分类:
编程语言 时间:
2014-10-07 21:51:04
阅读次数:
197
内存结构:Mysql 内存分配规则是:用多少给多少,最高到配置的值,不是立即分配图只做大概参考全局缓存包括:global buffer(全局内存分配总和) = innodb_buffer_pool_size -- InnoDB高速缓冲,行数据、索引缓冲,以及事务锁、自适应哈希等+...
分类:
数据库 时间:
2014-10-07 20:57:04
阅读次数:
305
深入理解java虚拟机系列(二):垃圾收集器与内存分配策略...
分类:
编程语言 时间:
2014-10-07 14:59:23
阅读次数:
208
STL内存创建
1. Stl内存创建__malloc_alloc_template
STL的常用的内存创建参考文件: stl_alloc.h,文件中定义了__malloc_alloc_template模板库,创建与释放使用C方法malloc、free、realloc,模板库里面主要对外提供了函数:
allocate: 分配内存
deallocate: 释放内存...
分类:
其他好文 时间:
2014-10-07 09:46:23
阅读次数:
279
10.如果写了operator new,就要同时写operator delete。
为什么要写自己的operator new和delete,首先这不叫重载,这叫隐藏。 new只是用来申请空间,而构造函数是在申请的空间的基础上继续初始化。
为了效率。缺省的operator new 进行内存分配是并不仅仅分配一块所需大小的内存,因为delete释放内存时要知道指针所指向内容的大小,所以,n...
分类:
编程语言 时间:
2014-10-06 22:07:40
阅读次数:
233
7.预先准备好内存不够的情况。
new在无法完成内存分配请求时,会抛出异常,异常了要怎么办,这是一个很现实且以后绝对要碰到的问题。
在c中一般使用宏来分配内存并检测分配是否成功,c++中类似以下函数:
#define NEW(PTR,TYPE) try { (PTR) = new TYPE;} catch (std::bad_alloc& ){assert(0);}catc...
分类:
编程语言 时间:
2014-10-06 16:41:30
阅读次数:
174
采用自定义的operator运算符实现自己的内存分配策略,在某些时候可以提高程序的效率。C++中的new运算符,具体工作流程如下:1.调用operator new申请原始内存2.调用place new表达式,执行类的构造函数3.返回内存地址而delete操作符的工作是:1.调用对象的析构函数2.调用...
分类:
其他好文 时间:
2014-10-05 19:54:28
阅读次数:
262
我们只需改动allocate和deallocate,来实现自己的内存分配策略即可。代码如下: 1 #ifndef ALLOCATOR_H 2 #define ALLOCATOR_H 3 4 #include 5 #include 6 7 template 8 class Allocato...
分类:
其他好文 时间:
2014-10-05 19:47:38
阅读次数:
236