我在我的测试应用程序中使用了 Obfuscar 进行混淆。我使用了 Stream 类,甚至对某些类使用了 IDisposable 接口。使用下面的代码来处理对象。
protected override void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing && baseStream != null && !keepAlive)
{
try
{
}
catch { };
baseStream = null;
}
}
disposed = true;
base.Dispose(disposing);
}
在检查文件时,我看到了不同的映射(由 obfuscar 生成的 Mapping.text)。它没有为不同的目标框架(netcoreapp1.1 和 netcoreapp2.0)提供相同的混淆结果。
对于 .NetCore1.1 mapping.txt 如下所示:
[ObfuscarTestApp]ObfuscarTestApp.TestStream::Dispose[1]( [System.Runtime]System.Boolean ) skipped: external base class or interface
而 .NetCore2.0 mapping.txt 如下所示:
[ObfuscarTestApp]ObfuscarTestApp.TestStream::Dispose[1]( [System.Runtime]System.Boolean ) -> a
这个问题会导致内存泄漏吗?任何人都可以对此提供一些意见。 提前致谢
internal sealed class TestStream : Stream
{
private Stream baseStream;
private long maxBPS;
private long windowBytes;
private long windowTime;
private bool keepAlive;
private bool disposed;
public TestStream(Stream baseStream)
: this(baseStream, 0)
{
}
protected override void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing && baseStream != null && !keepAlive)
{
try
{
}
catch { };
baseStream = null;
}
}
disposed = true;
base.Dispose(disposing);
}
}