专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

Linux系列:如何用 C#调用 C方法造成内存泄露

dotNET跨平台  · 公众号  ·  · 2025-03-04 08:00
    

文章预览

一:背景   1. 讲故事 好久没写文章了,还是来写一点吧,今年准备多写一点 Linux平台上的东西,这篇从 C# 调用 C 这个例子开始。在 windows 平台上,我们常常在 C++ 代码中用  extern "C"  导出 C风格 的函数,然后在 C# 中用 DllImport 的方式引入,那在 Linux 上怎么玩的?毕竟这对研究 Linux 上的 C# 程序 非托管内存泄露 有非常大的价值,接下来我们就来看下。 二:一个简单的非托管内存泄露   1. 构建 so 文件 在 Windows 平台上我们会通过 MSVC 编译器将 C代码编译出一个成品 .dll,在 Linux 上通常会借助 gcc 将 c 编译成 .so 文件,这个.so 全称 Shared Object,为了方便讲解,先上一段简单的代码: # include   # include   # include   # include   # define  BLOCK_SIZE (10 * 1024)               // 每个块 10K # define  TOTAL_SIZE (1 * 1024 * 1024 * 1024)  // 总计 1GB # define  BLOCKS (TOTAL_SIZE / BLOCK_SIZ ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览