第六章 内存管理
作者:Allen B. Downey
原文:Chapter 6 Memory management
译者:飞龙
协议:CC BY-NC-SA 4.0
C提供了4种用于动态内存分配的函数:
malloc,它接受表示字节单位的大小的整数,返回指向新分配的、(至少)为指定大小的内存块的指针。如果不能满足要求,它会返回特殊的值为NULL的指针。
ca...
分类:
其他好文 时间:
2016-07-15 11:07:39
阅读次数:
283
内存。sram:静态内存,价格贵容量大,不需要初始化上电就能用。dram:动态内存,价格便宜容量小,需要初始化后才能使用。在单片机额中,由于内存小希望开发尽量简单,所以内存适合全部用sram,在pc机中,所需内存大,软件复杂,不在乎dram初始化的开销,所以应该全部选用dram..
分类:
其他好文 时间:
2016-07-14 15:54:02
阅读次数:
142
当派生类使用了new时,必须为派生了定义显式析构函数、复制构造函数和赋值运算符。(这里假设hasDMA类继承自baseDMA类)显式析构函数: 复制构造函数: 赋值运算符: ...
分类:
其他好文 时间:
2016-07-12 21:06:54
阅读次数:
114
unsigned char的范围是0~255,在用cout输出的时候要显示数字的话记得进行int的强制转化才可以,否则都是输出的字符,除此之外的所有比较转换成整数在做比较吧 除此之外,在最近的项目里由于多次运用动态内存分配,代码运用了两种分配方式简单说一下。 无论两者是服从什么标准的,用new进行分 ...
分类:
编程语言 时间:
2016-07-12 13:50:03
阅读次数:
193
12.6.1 重载<<运算符要重新定义<<运算符,以便将它和cout一起用来显示对象的内容,请定义下面的友元运算符函数:ostream & operator<<(ostream & os, const c_name & obj){ os << ...; // display object conte ...
分类:
编程语言 时间:
2016-07-12 09:04:16
阅读次数:
133
这里非常的绕口 需要仔细的来看看: destory(): 显示调用一个对象的析构函数 相当于释放一个对象需要释放的一些动态内存 为下次真正释放对象做准备 deallocate():真正的释放一个内存块。这是一个上层封装也就是delete函数的上层封装 在STL的空间配置器中 有可能会调用delete ...
分类:
编程语言 时间:
2016-07-09 16:31:10
阅读次数:
257
动态内存与智能指针 在C++中, 动态内存用 new来分配空间并返回一个指向该对象的指针 用delete来销毁。 由于手动的对动态内存进行操作容易出现问题。所以新的标准库提供了两种智能指针。 智能指针的行为类似于常规指针。区别在于他负责自动释放所指对象。 shared_ptr : 允许多个指针指向同 ...
分类:
编程语言 时间:
2016-07-09 01:53:02
阅读次数:
206
一:new delete 是运算符,malloc,free是函数 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构 ...
分类:
其他好文 时间:
2016-06-27 15:11:25
阅读次数:
132
1. 关于动态内存分配 (1)new和malloc的区别 区别 new malloc 是否是关键字 关键字,是C++的一部分。被所有的C++编译器支持。 由C库提供的函数,注意是函数,而不是关键字,要依赖C库(cstdlib),在某些系统开发(如嵌入式)中可能不能调用。 分配单位 以具体类型为单位 ...
分类:
其他好文 时间:
2016-06-25 13:38:41
阅读次数:
157
FDG: 大规模并行系统中的动态内存分配器由于需要全局同步(记账) ,导致性能急剧下降。 代码解析 1.superblock 类中包含两个变量,两个函数。默认superblock大小为2048 items[size]:存储 current:指向下一个未使用byte的索引 init(void):初始化 ...
分类:
其他好文 时间:
2016-06-14 13:38:28
阅读次数:
233