前几天有人问我之前写的那个跳舞链解数独的程序的内存泄漏问题如何解决,因此回顾了一下我的那个程序。现在看来那个程序简直不忍直视,于是大刀阔斧的改了。主要是把动态内存分配都改为了静态预分配,这样就可以避免频繁的调用malloc和free。同时静态分配的好处就是内存访问局部性比较好,cache不容易mis...
分类:
其他好文 时间:
2014-08-24 14:05:12
阅读次数:
300
这里非常的绕口 需要仔细的来看看: destory(): 显示调用一个对象的析构函数 相当于释放一个对象需要释放的一些动态内存 为下次真正释放对象做准备 deallocate():真正的释放一个内存块。这是一个上层封装也就是delete函数的上层封装 在STL的空间配置器中 有可能会调用dele.....
分类:
编程语言 时间:
2014-08-23 16:38:51
阅读次数:
224
三、资源管理 资源就是一旦你使用了它,将来不用的时候必须归还系统。C++中最常用的资源就是动态内存分配。其实,资源还有 文件描述符、互斥器、图形界面中的字形、画刷、数据库连接、socket等。 1、 以对象管理资源 void f() { investment *plv = createInvestm...
分类:
编程语言 时间:
2014-08-20 13:47:52
阅读次数:
187
n 基本框架:a) 查看运行时数据b) 程序错误类型c) Gdb调试段错误d) Core文件调试6.1 查看运行时数据1) print 查看变量值2) ptype 查看变量类型3) print array 查看静态数组4) print *array@len 查看动态内存(malloc),也可以查看静...
分类:
数据库 时间:
2014-08-18 16:14:22
阅读次数:
213
new和delete用来申请动态内存空间,一定要配对使用#include #include #include #include #include // using declarations states our intent to use these names from the nam...
分类:
编程语言 时间:
2014-08-16 22:19:51
阅读次数:
280
1. Malloc:malloc/free是C++和C的标准库函数,可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用 malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是 库函数而不是运算符,...
分类:
其他好文 时间:
2014-08-04 13:37:38
阅读次数:
241
1.new、delete、malloc、free关系
delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之...
分类:
编程语言 时间:
2014-08-03 18:11:25
阅读次数:
407
两者都是在堆上分配内存区。malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存。GlobalAlloc()是16位WINDOWS程序使用的API,返回一个内存句柄,在实际需要使用时,用GlobalLock().....
分类:
其他好文 时间:
2014-08-02 17:53:34
阅读次数:
227
is-a关系 类包含关系
构造函数 复制构造函数 重载赋值操作符 析构函数
动态内存空间分配和释放 new delete操作
static 数据成员
友元函数 重载输入>>和输出<<操作符...
分类:
编程语言 时间:
2014-07-31 00:01:45
阅读次数:
439
intcount=0;//定义数组长度printf("请输入数组长度:");scanf("%d",&count);int*p=malloc(sizeof(int)*count);for(inti=0;i<count;i++){*(p+i)=arc4random()%(count-1+1)+1;printf("%d",*(p+i));}printf("\n");intmax=0;for(inti=0;i<count;i++){if(max<*(p+i)){ma..
分类:
其他好文 时间:
2014-07-30 03:30:33
阅读次数:
202