#ifndef __MEM__H #define __MEM__H #include<iostream> using namespace std; //自己主动管理内存块 typedef unsigned char byte; class Mem { private: byte* mem; int size; void ensureMinSize(int minSize); public: Mem(); Mem(int sz); ~Mem(); int msize(); //byte* poi…
多进程编程多用在并发服务器的编写上,当收到一个请求时,服务器新建一个进程处理请求,同时继续监听.为了提高响应速度,服务器采用进程池的方法,在初始化阶段创建一个进程池,池中有许多预创建的进程,当请求到达时,只需从池中分配出来一个进程即可:当进程不够用时,进程池将再次创建一批进程.类似的方法可以用在内存分配上. C++中,创建一个复杂的对象需要几十条指令,包括函数调用的代价(寄存器值得保存和恢复),以及构造或复制构造函数体的执行代价,甚至动态分配内存的代价.尤其是,在不重载new和delete运算符…
-------------------------------------------------------------------------------- 标题: 固定尺寸内存块的缓冲队列类及实现源代码 作者: 叶飞虎 日期: 2014.10.21 -------------------------------------------------------------------------------- 在一般的线性操作应用中(如: 接收缓冲区), 可能须要频繁分配和释放内存块, 频繁…
摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就提出了一种把通过FILE*来访问内存的需求,下文是针对这个需求的几个方面的尝试及其结论. 以下尝试的前提是:Win7 + VS2010. 在vc中,FILE其实就是_iobuf,定义如下: struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前…
前段时间准备面试,看了一些库函数的实现,在看到memcpy时,发现有处理source和destination所指内存有重叠的情况,而strcpy没有,特别模仿库函数写了这个函数,并进行了测试.以下是具体的source code 和测试结果.   char *strcpy2(char *strDest, const char *strSrc){assert( (strDest!=NULL) && ( strSrc!=NULL));  if ( strDest == strSrc)  retu…
access_ok() 函数是用来代替老版本的 verify_area() 函数的.它的作用也是检查用户空间指针是否可用. 函数原型:access_ok (type, addr, size); 变量说明:type   :   访问类型,其值可为 VERIFY_READ 或者 VERIFY_WRITE .注意,VERIFY_WRITE 是 VERIFY_READ 的超集 -- 如果可以安全的写内存块,那么自然也总能读到内存块. addr  :   用户空间的指针变量,其指向一个要检查的内存块开始处…
今天简述一下简单的内存管理,在IOS5.0以后Apple增加了ARC机制(Automatic Reference Counting),给开发人员带来了不少的方便,但是为了能更好的理解IOS内存管理机制,还是需要对其比较了解. 1.在OC中,每个对象都有一个保留计数,创建时每个对象都有一个初始值为1的保留计数,释放时,保留计数都为0 2.创建自动释放的对象 要求以一个方法创建对象时,以自动释放的形式返回该对象是一个很好的编程实践 +(Car *)car { Car *myCar = [[Car a…
1.strcpy字符串拷贝拷贝pStrSource到pStrDest,并返回pStrDest地址(源和目标位置重叠情况除外) char *strcpy(char *pStrDest, const char *pStrSource) { assert(NULL!=pStrDest && NULL!=pStrSource); char *strTemp=pStrDest; while ((*pStrDest++ = *pStrSource++) != '\0'); return strTemp…
#include <stdio.h> #include <malloc.h> void out(int *p, int n){ int i; for(i=0;i<n;i++){ printf("%d ", *(p+i)); } printf("\n-------------------\n"); } printf("\n-------------------\n"); } int main(void){ printf…
内核对象&句柄 目录 1 内核对象的概念 2 内核对象的使用计数 3 句柄 4 句柄表   项目工程代码中设计句柄的使用,一时不知句柄是何物,通过查阅自学之后,对句柄及其使用有一个初步的了解.分享出来,算是抛砖引玉吧.  在阐述句柄之前,先说明一下内核对象. 1 内核对象的概念   内核对象就是一个内存块,有内核分配,只能由内核访问.   内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访问,应用程序是无法访问到的,更别说修改其中的数据成员了…