现在位置: 首页 > 内存管理
在使用内存映射操作文件之前,我们先按照常规的方式来读写文件,这种方式操作如下: 1,打开或创建文件,得到文件描述符, 2,将内存中的数据以一定的格式和顺序写入文件,或者将文件中的数据以一定的格式和顺序读入到内存; 3,关闭文件描述符; 下边是按照常规方式操作固定格式的文件的方法,包含读写两个示例; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #inclu...
阅读全文
2019-07-04 07:41 工业·编程 ⁄ 共 3204字 暂无评论
内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间<---->用户空间两者之间需要大量数据传输等操作的话效率是非常高的。 以下是一个把普遍文件映射到用户空间的内存区域的示意图。 基本函数   mmap函数是unix/linux下的系统调用,详细内容可参考《Unix Netword pro...
阅读全文
2019-05-19 05:40 工业·编程 ⁄ 共 1650字 评论 1 条
一.程序内存的区域 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的内存分配是连续分配的,即,所分配的内存是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存. 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统回收.类似于链...
阅读全文
2019-05-08 21:00 工业·编程 ⁄ 共 873字 暂无评论
发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序 运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。 有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。 常见的内存错误及其对策如下: 内存分配未成功,却使用了它。 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是, 在使用内存之前检查指针是否为 NULL。如...
阅读全文
2015-10-21 06:27 工业·编程 ⁄ 共 3824字 暂无评论
Google V8 引擎(以下简称V8)是 Google 的一个开源项目,旨在构建一个高效的 JavaScript 引擎,是Google特别为Chrome高速运行网页应用(Web App)而开发的。同时,它可以作为一个独立的库被嵌入到其他应用程序中,以提高软件的灵活性和可扩展性。目前,V8引擎由于其高效的性能吸引了越来越多的关注。 Google的好几款应用都是基于JavaScript,其中包括Gmail电子邮件服务、Google Maps地图数据服务、以及Google Docs office套件...
阅读全文
2015-02-19 22:54 工业·编程 ⁄ 共 3619字 暂无评论
在高效C++编程中看到一个不错的内存池实现方案,这里共享下,大家看看有什么不足。 代码很简单,如下: template<typename T> class CMemoryPool { public: enum { EXPANSION_SIZE = 32};         CMemoryPool(unsigned int nItemCount = EXPANSION_SIZE)         {             ExpandF...
阅读全文
2015-02-17 22:45 工业·编程 ⁄ 共 7867字 评论 1 条
文章目录 头文件base.h 内存池cpp文件 相对于在栈空间分配内存,堆中分配内存其实是非常缓慢的。 另外,由于堆中分配的内存,需要开发者编码回收,当系统非常庞大时,容易出现分配的内容没有回收导致内存泄露的现象。 因此,许多Bible建议开发者尽量使用栈空间,少用甚至不用malloc和free、new和delete; 虽然栈的空间较小,但这样的建议随着计算机的位数从32位升级到64...
阅读全文
文章目录 问题的提出 程序清单 1 V0.1版程序 程序清单 2 测试用例 程序清单 3 V0.2版程序 程序清单 4 V0.3版程序 程序清单 5 V0.4版程序 程序清单 6 V0.5版程序 程序清单 7 V0.6版程序 程序清单 8 重叠的内存测试 程序清单 9 V0.7版程序 程序清单 10 相对全面的测试用例 问题的提出 1个函数,完成内存移动,并为其写一个简单的测试用例来进行测试。 够简单的吧?有的同...
阅读全文
我们可以总结一下一些随机常见的崩溃原因: 1. 不确定的变量:程序使用了随机的数字或变量组件,在程序执行时没有被很好的确定范围。如:用户输入,随机数,或时间。 2.内存泄漏:程序每次执行时都内存溢出。每次运行程序崩溃的罪魁祸首是随机的,因为它依赖于在特定时间运行的进程数。包括堆溢出或者是栈异常。 程序依赖于其它外部应用也可能导致崩溃。如果我们的应用依赖于一个系统某些系统属性,他们被另一个程序修改,那么...
阅读全文
2k以上的操作系统,微软提供了一种新的功能Online Crash Analysis,简称OCA,就是当程序崩溃的时候我们看到的的那个对话框,问你是否把崩溃的一些信息发送到微软,各个软件厂商可以从微软那里根据收集到的程序版本和出错的地址等信息来完善自己的程序。 如果你手头什么小工具都没有的情况下,下面这个方法可以很快的手工定位到出错地点。 点击“请单击此处”,可以看到详细的信息。 其中AppName是出错程序的exe文件名,AppVer是e...
阅读全文