如果工程中存在malloc/free等频繁动态分配和释放内存的情况,一般优化思路是:
方法1:加内存池
方法2:使用全局buf
方法1的优点:众所周知,不详细说了。
方法2使用场合:整个工程运行过程中,动态分配的内存大小有规律性且有最大个数。可以在工程起始阶段就分配足够的全局buf。
内存池前面文章有实现代码,这里说下支撑方法2实现的主要技术:那就是全局变量的使用方法。
Step1:
opt.h中用extern声明全局buf变量,只声明但不定义!
重要的一行代码是:extern unsigned char* ge_pucBuf;
#ifndef _H_OPT_H__
#define _H_OPT_H__
extern unsigned char* ge_pucBuf;
void initBuf(unsigned char* pucBuf);
void DeinitBuf();
#endif
Step2:在opt.cpp中不用extern再声明一次,并提供定义全局变量的对外接口
opt.cpp中提供定义全局buf变量的方法,供工程起始阶段调用一次,实现全局buf变量的定义。
重要的一行代码是:unsigned char* ge_pucBuf;
#include "./opt.h"
#include <stdlib.h> //for malloc
unsigned char* ge_pucBuf;
static unsigned int gs_uiBufLen = 0;
void initBuf(unsigned char* puc