【性能优化】如何实现:c/c++整个项目工程使用一个全局变量

本文介绍了如何在C/C++项目中通过全局变量优化内存动态分配,特别是对于内存分配有规律且数量有限的情况。通过在头文件中extern声明,源文件中定义,并在工程初始化阶段分配内存,实现全局内存池,以提高性能。各个源文件可以引用头文件并使用该全局变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果工程中存在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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值