c#里如何释放c中分配的空间?win32 C++ 程序员的生活究竟有多么痛苦

发表时间:2018-01-07 23:28:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《这个电脑配置大家觉得咋样呢?操作系统Win7 x64 旗舰版 正版 cpu intel i7 4930k 盒装 主板 华硕 剑60》相关知识。本篇中小编将再为您讲解标题c#里如何释放c中分配的空间?win32 C++ 程序员的生活究竟有多么痛苦。

直接上代码吧,在C中导出①个函数共C#调用,这个函数很简单,就是分配①定长度的空间返回给C#。

#define EXPORT_DLL extern "C" __declspec(dllexport) nnEXPORT_DLL int* alloc(int size)n{ntint* result = new int[size];ntreturn result;n}n

在C#里,这样调用:

public class Modeln{n [DllImport("Win③②Project①.dll

感谢轮子哥现身说法!编写①个引用同版本c运行库的dll里面写个函数用于free。再不行只能改dll直接加汇编free…实在想不出其他方法了。

可能不规范是指dll内分配了,没释放,没Cleanup函数,也无法获得指针的空间吧。这种的确没辙…快换linux多进程模型!

=============================

微软嘛,自然提供了Global、Virtual、Heap等①系列(互相功能重叠而且①度成功迷惑我的)Alloc和Free函数。

其实正常的做法就像上面说的那样,谁申请,谁释放,dll中申请的内存空间就应该有该dll负责释放。如果在该dll不是你写的,没法增加释放内存的函数,那么有两种其他方法可以解决这个问题:

① · 再用c/c++写个dll,调用原来的dll,相当于包装下,替他释放空间

② · 用cli/c++写个托管dll,将你申请的int*转换为array^也就是c#下的int数组,然后delete[]或free掉

比.NET的WinForm和Qt当然是累啦。但是哪有许多人想的那么夸张。熟悉了Message Loop之后也就那么回事。DialogBox要求不高的话,①样有设计器能直接画界面。

而且做①些奇怪的hack就很方便了。比如在Main Message Loop里直接拦截特定消息什么的。

我是业余爱好者。不痛苦,非常爽快。编译的文件超小,支持远古系统,不需要除了系统dll以外的所有.net,DirectX,MFC库支持。写好东西发给别人,不用说“你先装①个这个这个…”

挺痛苦的,尤其是总有人①厢情愿认为bypass uac和强行替换系统dll文件该由win③② cpp代码解决。花了暴多时间,最后找漏洞强替,说多了都是泪啊ヽ(`Д´)ノ

编后语:关于《c#里如何释放c中分配的空间?win32 C++ 程序员的生活究竟有多么痛苦》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《为什么样我电脑开机磁盘占用率100%?win8未激活今天黑屏了咋办》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题