char buf[MAX_PATH]; ::WideCharToMultiByte(CP_ACP,0,fontName,-1,buf,MAX_PATH,NULL,NULL);
就是这个buf
怎么释放他
谢谢

解决方案 »

  1.   

    char buf[MAX_PATH]放在栈中,作用范围结束系统自动帮你释放,你不用管
      

  2.   

    char buf[MAX_PATH];
    你这是在堆栈中分配的空间,函数结束后自动释放。再多说一句:由于这个原因,你不能把buf最为函数返回值,因为出去了一后,什么都没有了。
      

  3.   

    一般用new,malloc等申请的堆内存才要释放的
      

  4.   

    程序的内存分配
    一个由c/C++编译的程序占用的内存分为以下几个部分:
    1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等.
    2、堆区(heap) — 一般由程序员分配放,若程序员不释放,程序结束时可能由OS回收.
    3、全局区(静态区)(static),全局变量和静态变量的存储是放在一块的 - 程序结束后有系统释放 .
    4、文字常量区—常量字符串就是放在这的. 程序结束后由系统释放.
    5、程序代码区—存放函数体的二进制代码。 堆和栈的理论知识 
    2.1申请方式 
    stack: 
    由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间 
    heap: 
    需要程序员自己申请,并指明大小,在c中malloc函数 
    如p1 = (char *)malloc(10); 
    在C++中用new运算符  如p2 = new char[10];
    但是注意p1、p2本身是在栈中的。