诚心请教!!!关于定义全局动态数组变量!!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:56:36
首先我用的是VC++6.0,要求位图中像素的RGB平均值,比如整幅位图中,选择m*n(比如20*20也可以为50*50)块长宽各为100像素的测量区域,我把这些m*n个平均值放在全局变量AverR[700],AverG700],AverB700]里,可是m*n是不确定的数,AverR[x]里的范围设大了,浪费内存,设小了又不够
我想用malloc来定义全局动态数组
.h头文件里定义:
float *AverR, *AverB, *AverG;
在.cpp文件里第一次用到这些变量的初始化:
int num;
num = m_blocknox*m_blocknoy+2;
AverR = (float *)malloc(sizeof(float) * num);
AverG = (float *)malloc(sizeof(float) * num);
AverB = (float *)malloc(sizeof(float) * num);
最后再释放:
free(AverR);
free(AverG);
free(AverB);
可是我这样编译是没错,可是程序执行不了。
第二是这些平均值AverR, AverB, AverG在很多函数中要用到,free(AverR)的话,在哪个函数中写呢?要不是在最后一个用的函数free掉的话,提前free的话,后面的函数就用不上了吧?

请教切实可行,详细的解答!!谢谢!!!
程序执行不了,就是一计算平均值(也就是用到这些值的函数),程序就直接关闭了

我不太看得懂alwccfku 的意思,郁闷……

我记得要先申请一块内存区域,也就是初始化一段区域,然后再根据需要再用realloc重新申请一块更大的区域,将原来内存内的数据转到新内在块后再释放原来的内在块.
举个例子:
char *tmp1=(char *)malloc(100*sizeof(char));
char *tmp2
int num=m_blocknox*m_blocknoy+2;
if(!tmp2=realloc(tmp1,num))
{printf("error allocation memory!\n");}
strcpy(tmp2,tmp1);
free(tmp1);
...
free(tmp2);
我觉得100个字节不算是太占内存,所以建议还是用静态数组好一些,大一些的动态内存的释放有可能造成一些内存泄漏等问题.

这样看看不出问题来,你可以用百度hi把程序发给我

程序执行不了是什么意思,有异常还是啥?