对全局变量的内存分配,要不要释放的?他是不是每次程序的创建都是开始重新创建还是???
什么是堆栈?他和一般的内存区域有什么不同吗?类的实例化的对象变量是什么时候创建内存区域什么时候回收的?

解决方案 »

  1.   

    对全局变量的内存分配,要不要释放的?
    ------------------------------------
    手动申请的,手动释放,系统分配的,不用管
    char globalA;//系统分配的内存空间,不用管
    char* globalB;funcA()
    {
    globalB = new char[500];//手动申请的,需要手动释放
    delete[] globalB;char* localB = new char[500];//手动申请的,需要手动释放
    delete[] localB;
    //和globalB是否是全局的变量没有关系
    }
      

  2.   

    全局变量编译器在处理的时候是放置在程序的数据段的,所以程序在加载的时候,全局变量就已经进行了存在了,它随着程序的退出而删除。而局部变量又叫自动变量,随着某个函数的退出而销毁,是在程序的运行栈内生成的,一般程序的运行栈是1M大小,所以如果局部变量定义很大的数组,程序容易死掉,因为程序运行栈爆了。而 通过malloc和new 申请的是由系统的虚拟内存,规则是,申请了,都要进行释放。否则容易造成内存泄漏,导致系统响应变慢。
      

  3.   

    加入全局变量的办法
    (Abbey发表于2004-2-1 1:53:08)第一种办法:
    假设这个全局变量int MyGlobal在View中使用得最多,于是在View的CPP文件中加入这个变量的声明,然后在StdAfx.h中加入:extern int MyGlobal;第二种办法:
    在App中加入这个全局变量int MyGlobal(public型,实际已经不是真正意义上的全局变量,而是App的数据成员),然后在需要的地方利用如下代码访问它:CColorApp * pApp = (CColorApp *)AfxGetApp();
    pApp->MyGlobal = 8888;