C#调用C++dll,传指针释放内存问题

一、传入dll前,在C#中申请内存空间

c#里面的指针即 IntPtr

申请如下:

这种需要提前知道空间大小,否则无法确定空间大小,会导致dll内部处理时越界报错。

c#里面申请空间了,那么c++里面一般就是在这些空间里面操作了,一般不会重新分配内存,那么就不需要加引用了。

c++:

c#导入dll函数时申明:

那么内存释放自然也是由c#来进行。

二、dll内部会对指针重新分配内存

这时c#便不需要在外部申请内存空间,初始化一个指针即可:

由于dll内部申请了空间,作出了一些改变,所以想要传回C#中需要使用引用

c++:

c#导入dll函数时申明:

C++内部申请内存空间有几种方式,new或者malloc,如果是这两种分配方式,那么dll应该提供释放内存的函数接口,否则C#无法正常释放内存,长时间运行内存会逐渐增长即内存泄漏。

如果是通过cotaskmemalloc方式申请内存:

那么C#里面可以正常释放:

当然,如果C++中提供释放接口的话就不需要这样去释放了。

三、clr模式下的C++dll

经过测试,如果用clr,C++内部用new来分配内存,C#里面可以通过FreeHGlobal正常释放

Original: https://www.cnblogs.com/Clark-Zhang/p/14154798.html
Author: 朔月の流光
Title: C#调用C++dll,传指针释放内存问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/712719/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Nightingale 监控报警平台

    Nightingale 从官方的介绍是企业版的prometheus,从功能上的确是很不错的,我们基本上可以实现基于ui 灵活的管理prometheus 的报警处理 参考架构 Vic…

    技术杂谈 2023年5月30日
    099
  • SpringMVC

    SpringMVC 注解收集: -@component 组件 -@service service -@controller contro1ler /*代表这个类会被Spring接管…

    技术杂谈 2023年6月21日
    078
  • 10个梯度下降优化算法+备忘单

    原标题 | 10 Gradient Descent Optimisation Algorithms + Cheat Sheet作者 | Raimi Karim in Towards…

    技术杂谈 2023年5月31日
    0104
  • 58.忘与记

    dsfds posted @2022-09-28 08:33 随遇而安== 阅读(3 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    技术杂谈 2023年6月21日
    091
  • OO第四单元&课程总总结

    OO第四单元&课程总总结 时刻提醒自己不能跑题完结撒花 OO第四单元&课程总总结 架构介绍 + 类图 顺序图 状态图 关于算法 设计思维 与 OO理解演进 封装与解…

    技术杂谈 2023年7月25日
    078
  • tensorflow 2.1 采坑记

    tf 2.1 安装了好多遍,把python 从3.6 搞到了3.7还是没办法安装成功 问题出在这里要使用这些新软件包,用户必须安装「Microsoft Visual C ++ Re…

    技术杂谈 2023年7月11日
    096
  • 15项“成功金口才”突破训练

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/onelikeone/p/16518629.htmlAu…

    技术杂谈 2023年5月31日
    097
  • html换行的方法

    1、使用 1 <html> 2 <body> 3 <p> 4 春眠不觉晓&…

    技术杂谈 2023年7月11日
    071
  • Win下安装nvm

    nvm 是 windows 下切换 node 版本的管理工具,mac 下可以使用 TJ 写的 n 。 1、https://github.com/coreybutler/nvm-wi…

    技术杂谈 2023年6月1日
    096
  • Axis1.4 调用.net服务出错

    1 出错描述: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client faultSubcod…

    技术杂谈 2023年7月24日
    078
  • FCBU喜马拉雅音频批量下载器

    如上无法下载,请点这里试试>>> 下载② 对于360杀毒软件、360卫士对本软件报病毒的严正声明!点击查看文件校验信息 ,下载文件后请对比文件校验信息,以防文件被…

    技术杂谈 2023年5月31日
    0103
  • SCHED_FIFO与SCHED_OTHER调度机制【转】

    两个线程分别有不同的调度策略,一个SCHED_FIFO,一个SCHED_OTHER,按照之前的理解,SCHED_FIFO实时线程一定会占用CPU一直运行,导致SCHED_OTHER…

    技术杂谈 2023年5月31日
    093
  • 【七夕限定盲盒抽奖】一文带你搞懂盲盒抽奖的页面配置

    基于Serverless架构的盲盒抽奖系统 当前,Serverless在移动应用、游戏等场景已经实现规模化应用,Serverless 技术可以更好的帮助开发者只关注应用创新,减少对…

    技术杂谈 2023年7月10日
    075
  • 面经

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/langtianya/p/10873753.htmlAu…

    技术杂谈 2023年5月31日
    0100
  • html大文件分段传输

    总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,ht…

    技术杂谈 2023年5月30日
    0117
  • SparkConf-配置对象

    1.介绍 Spark应用程序配置配置对象,负责为 SparkContext 对象加载 各种提交参数 维护了 一个 ConcurrentHashMap结构, 用来 key-value…

    技术杂谈 2023年7月11日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球