从函数或方法返回内存 动态内存的另一个常见用途是让函教申请并返回一个指向内存块的指针。掌握这个技巧很重要,尤其是在你打算使用由别人编写的库文件时。如果不知道这个技巧,就只能让函数返回一个简单的标量值,如整型、浮点型或字等型。换句话说,它既不能返回一个以上的值,也不能返回数组之类比较复杂的数据结构。可 ...
分类:
其他好文 时间:
2019-03-05 11:21:41
阅读次数:
178
动态内存分配 1.1 为什么使用动态内存分配 直接声明数组的方式的缺点: 1) 声明数组必须指定长度限制.无法处理超过声明长度的数组. 2) 如果声明更大的常量来弥补第一个缺点,会造成更多的内存浪费. 3)如果输入数组的数据超过来数组的容纳范围,程序必须以一种合理的方式作出响应.但是程序员一般不会做 ...
分类:
其他好文 时间:
2019-02-28 18:35:42
阅读次数:
215
Boost库的pool提供了一个内存池分配器,用于管理在一个独立的、大的分配空间里的动态内存分配。 Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况。使用pool内存池主要有以下两个优点: 1. 能够有效地管理许多小型对象的分配和释放工作,避免了自 ...
分类:
其他好文 时间:
2019-02-27 11:51:02
阅读次数:
439
动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的。有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种 智能指针 类型来管理动态对象。智能指针的行为类似常规指针,区别在于它负责自动释 ...
分类:
编程语言 时间:
2019-02-20 22:48:41
阅读次数:
265
程序计数器: Java虚拟机栈 【示例1-1】: Java虚拟机栈内存溢出: Java方法执行动态内存模型图: 本地方法栈:与Java虚拟机栈的运行都是一致的,唯一的区别是:Java虚拟机栈为虚拟机执行Java方法服务,而本地方法栈为虚拟机执行native方法服务。 Java堆:是虚拟机中管理内存最 ...
分类:
编程语言 时间:
2019-01-28 10:52:55
阅读次数:
195
在C++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。 动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时会忘记释放内 ...
分类:
编程语言 时间:
2019-01-24 18:51:00
阅读次数:
168
范围:郝斌Cp140 p142(为什么需要动态内存到malloc) 一,传统数组(静态数组)的缺点: 1,数组长度必须事先制定,且只能是常整数,不能是变量; 2,静态数组,程序员不能手动释放; ??3,数组长度一旦定义就不能再改变; ??4,静态数组不能跨函数使用; //动态数组能够很好地解决这四个 ...
分类:
其他好文 时间:
2019-01-20 11:50:51
阅读次数:
181
全局对象在程序启动时分配,在程序结束时销毁。对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。局部static对象在第一次使用前分配,在程序结束时销毁。 除了自动和static对象外,C++还支持动态分配对象。动态分配的对象的生命期与它们在哪里创建是无关的,只有当显示地被释放时 ...
分类:
其他好文 时间:
2019-01-17 10:54:00
阅读次数:
201
拷贝控制和资源管理 通常,管理类外资源的类必须定义拷贝控制成员。有两种选择:可以定义拷贝操作,使类的行为看起来像一个值或者像一个指针。 类的行为像一个值,意味着它应该也有自己的状态。当我们拷贝一个像值的对象时,副本和原对象时完全独立的。改变副本不会对原对象由任何影响,反之亦然。 行为像指针的类则共享 ...
分类:
其他好文 时间:
2019-01-13 11:02:38
阅读次数:
148
内存管理分静态内存管理和动态内存管理(根据大小又分2种) 静态内存管理:创建、删除、初始化、解绑、申请和释放。初始化内存池是属于静态内存管理,与创建内存池不同的是,此处内存池对象所使用的内存空间是由用户指定的一个缓冲区空间,用户把缓冲区的指针传递给内存池对象控制块,其余的初始化工作与创建内存池相同。 ...
分类:
其他好文 时间:
2019-01-12 00:21:43
阅读次数:
240