小编myc*_*oes的帖子

为 Memory<byte> / Span<byte> 获取可变结构的正确方法?

对于网络协议实现,我想利用 newMemorySpanclasses 在通过struct.

我有以下人为的例子:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct Data
{
    public int IntValue;
    public short ShortValue;
    public byte ByteValue;
}

static void Prepare()
{
    var buffer = new byte[1024];
    var dSpan = MemoryMarshal.Cast<byte, Data>(buffer);
    ref var d = ref dSpan[0];

    d.ByteValue = 1;
    d.ShortValue = (2 << 8) + 3;
    d.IntValue = (4 << 24) + (5 << 16) + (6 << 8) + 7;
}
Run Code Online (Sandbox Code Playgroud)

结果是buffer充满了7, 6, 5, …

c# struct system.memory

5
推荐指数
1
解决办法
633
查看次数

Dictionary <Entity,int>的流畅NHibernate映射

在我的域名中,我有一个Transport可以Endpoints在某些位置访问的内容,因此我有以下内容:

public class Transport
{
    public IDictionary<Endpoint, int> AccessPointPosition { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我试图AccessPointPosition通过组合HasMany和映射AsMap,但我没有成功找到任何通过Fluent NHibernate配置的东西.

我忽略了什么吗?这不可能吗?有关于这个主题的文件吗?

c# nhibernate dictionary fluent-nhibernate

1
推荐指数
1
解决办法
1745
查看次数

删除map <string,string>的内存

我有一个方法返回一个新的映射指针,后来消耗.在使用地图的地方,我有以下代码:

void Updater::set_data(map<string, string> * data)
{
    if (this->data != NULL)
    {
        delete this->data;
    }
    this->data = data;
}
Run Code Online (Sandbox Code Playgroud)

只要应用程序正在运行,此使用者就会运行.

但是,我的应用程序正在泄漏内存并且Valgrind报告它正在泄漏(1个块中的600个(48个直接,552个间接)字节在丢失记录中明确丢失...)在构造映射的行中:

map<string, string> * values = new map<string, string>();
Run Code Online (Sandbox Code Playgroud)

我做错了什么来摆脱地图(并释放内存)?我没有太多的C++经验,所以我猜这是一些初学者的错误,但我花了大量的时间试图计算它可能是什么.

编辑 我只有2个更新程序运行(或者如果我选择了1,但总是预定义的固定数量),并且地图始终包含类似的数据,通常甚至与以前完全相同.

c++ memory-leaks

1
推荐指数
1
解决办法
278
查看次数