string ary[10]这样的数组怎么在程序结束时去释放内存.
string类型的字符串需要内存释放吗?如果需要该如何释放谢谢!

解决方案 »

  1.   

    不需要
    1. string ary[10];定义在栈上,其对象本身空间会在block结束时释放
    2. ary中string对象申请的空间 -- 字符串缓冲区, 会在string对象析构时自动释放
      

  2.   

    但是很奇怪我用vc写了个dll
    然后我在.Net程序中调用但为什么内存占用以百K增加了?
    望高手帮忙
      

  3.   

    汗,可能又是CRT堆的问题...你是不是把string在dll外定义,再传入dll, 在dll中处理,最后又在dll外使用?
      

  4.   

    char* MD5_Calc(char* chashthis)
    下一步我就
    string hashthis(chashthis);
    然后就是对hashthis的操作
      

  5.   

    string ary[10];
    应该是
    CString ary[10];
    吧?
    这样申请就想当于变量,变量有作用域的,如你在一个成员函数里用,出了成员函数就不能用了。到这个实例结束时,就变系统销掉。如果用new关键字申请的变量,是没有作用域的,必须手工销掉。否员内存会泄。
      

  6.   

    string hashthis(chashthis);
    麻烦问一下这句是什么意思?你用的是c语言吧?
      

  7.   

    对我写的是md5加密算法.
    C#传入一字符串
    C++Dll返回.
    但是个60秒需要自检程序.所以循环调用内存存在问题。.
      

  8.   

    @ediex
    string hashthis(chashthis);构造函数.
      

  9.   

    md5加密算法.一般是只加密密码,再用md5密码值,去异或别的内容。不能很大的内容用md5加密的。md5是非常非常慢的
      

  10.   

    我没太看懂你的具体代码,因为我对STL也不是很熟悉但是有一条准则就是,谁申请的谁释放,因此你在string使用完以后应该将它再传入dll, 由dll调用其空间释放函数(我不晓得string的清空函数是哪个),这个是CRT堆的原因如果上面的方法还不行,可能就需要用指针了:
    dll new出一个指针string * 给调用者,调用者使用完之后传入dll, 由dll来delete...
      

  11.   

    恩.
    谢谢jasonshark(没暑假了...)
    也谢ediex(999)
      

  12.   

    @ediex 
    string 是标准的C++的类
    #include <string>
    using namespace std;