.预分配内存
预分配内存主要是针对需要循环处理数据的情况的。比如视频处理,每帧图像的处理都需要一定的缓存,如果每帧申请释放,则势必会降低算法效率,如下所示:
View Code
1 //处理一帧
2 void Process(BYTE *pimg, BYTE *pBuffer)
3 {
4 ...
5 }
6
7 //循环处理一个视频
8 malloc pBuffer
9 for(int i = 0; i < N; i++)
10 {
11 BYTE *pimg = readimage();
12 Process(pimg, pBuffer);
13 }
14 free
前一段代码在每帧处理都malloc和free,而后一段代码则是有上层传入缓存,这样内部就不需每次申请和释放了。当然上面只是一个简单说明,实际情况会比这复杂得多,但整体思想 是一致的。