2016 - 2024

感恩一路有你

struct结构体类型 网关内存怎么清理?

浏览量:1089 时间:2021-03-15 03:01:03 作者:admin

网关内存怎么清理?

一方面,我取消了struct的使用,将它改为class。只需保留一些必要的结构,如完成键和IO句柄。因为类包含析构函数并且具有生存期,所以它的资源的释放更容易控制。虽然struct是C中的一个类,但我仍然使用malloc来分配资源。

另一方面,系统内存主要是在套接字频繁登录和注销时生成和注销密钥和IO句柄。为此,建立了一个内存池队列。使用的内存不会被释放,而是存储在内存队列中。当需要内存时,可以从队列中检索它。

但是在使用过程中出现了一个不正常的问题,让人痛苦了很久。以前没有内存管理时,一次向套接字发送n IO请求。没有问题。但在内存管理队列中,当套接字退出并断开连接时,它的IO句柄和完成键将进入队列。当断开连接事件发生时,套接字的所有n IO请求立即返回,导致完成密钥(当套接字与完成端口关联时生成,只有一个)多次进入队列。从队列中获取密钥时,多个套接字将共享一个密钥,从而导致不可预知的错误。

如何删除结构体中的一个元素?

结构数组也是一个数组,其空间已在运行时分配。从物理地址中删除它应该是不可能的。这与链表不同。我们可以释放记忆。但是,如果在逻辑上删除此值,则可以记录存储内容的结构数组的下标。如果要删除此数据,可以让下标指向重新存储数据的位置。当然,你也可以用这个方法。对于要删除的内容,可以将工程师编号设置为负数。如果不需要内容,可以将其设置为负数。每次保存时都可以判断数字是否为负数。

struct结构体类型 结构体是怎么分配内存的 结构体所占内存大小

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。