oO飛翔的馒头Oo 2019-02-11 15:35 采纳率: 16.7%
浏览 744

请教一个关于c++DLL供C#调用的代码,是否会出现内存泄漏的问题

const char* __stdcall abc(const char* data) {
    int size = strlen(data);
    string s = "";
    for (int i = 0; i < size; i++) {
        s += data[i];
    }
    return s.c_str();
}

本人做c#,现在需要用c++实现一些内容,传入参数和返回参数都是指针,在c++的DLL中,定义了一些变量,在C#中我通过Intptr来获取返回值,上面的函数模拟了大概的内容,对c++中内存泄漏问题没有经验,这样在c#调用,会造成内容泄漏问题么,c#中的Intptr是不需要释放的吧

  • 写回答

3条回答 默认 最新

  • dragonvii 2019-02-11 15:44
    关注

    这样会有问题的,用类似windows api的形式吧,如下

    //参数:data     数据
    //          buff      写缓冲
    //          bsz       写缓冲最大长度
    //例子:C#
    //       string data = "xxxxxx";
    //       string buff[1024]
    //        abc( data, buff, 1024 );
    void __stdcall abc( const char*  data, char*  buff, int bsz )
    {
        int size = strlen(data);
            if( size > bsz )size = bsz;
    
        for (int i = 0; i < size; i++) 
            {
            buff[i] = data[i];
        }
    }
    
    
    评论

报告相同问题?