C语言如何实现内存池

Python013

C语言如何实现内存池,第1张

原理就是先申请一大块内存,按照不同尺寸分成很多固定块. 比如16字节100块儿,32字节100块儿.64字节50块儿,具体多少块儿要看你的项目需求,我这里只是举例,反正应用时保证够就行.

然后程序运行时,不再用malloc和new来申请内存. 而是从这些块儿里申请.如果一个结构体A它的尺寸是30字节. 那么就从内存池里申请一块儿32字节的给他.

当然释放时,也要归还给内存池.

内存池负责管理一个Free-Block链表.

静态的内存使用的是栈空间内存,不用程序员自己来分配.动态内存由程序员根据需要来自己分配并收回.

最大的区别在于动态的内存分配时候会用new关键字或malloc或calloc函数,之所以要程序员自己来分配内存是由于有时候不能确定程序要使用多少内存,比如要通过用户或者文件或者数据库中的查询结果来确定使用多少数据,这时候程序员无法在程序的编写的时候就把内存给固定分配出来.这时候必须得让程序在运行的时候自己来为自己找到可用的内存,就一定要用动态的方式来分配内存.

举个例子,根据用户的输入一个整数来确定用户要输入的数组维数,这个整数不是一定确定的数值,我们可以用一个变量n来表示,并用它接受用户的输入,再根据n来生成一个整数数组.程序不能写成int array[n]的形式,这样程序是不能编译通过的,这是因为n是一个不确定的数值.只能用new或malloc来通过用户的输入来分配内存.可以写成这样:

int n

cout <<"input n:"

cin >>n

cout <<endl

int* iArray = new int[n]

for (int i = 0i <ni++)

{

cin >>iArray[i]

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。