初始化IOCP的一个结构体时,编译器谈内存泄漏,泄漏代码已列出,请大大指点
初始化IOCP的一个结构体时,编译器说内存泄漏,泄漏代码已列出,请大大指点
gObj[n].PerSocketContext = new _PER_SOCKET_CONTEXT;
//debug模式下就是说此行内存泄漏,因为1000此循环所以泄漏1000次
我看不出来有啥问题啊,有懂的大大来说说
------解决方案--------------------
你new了却没delete,这不就是最典型的内存泄露,不然LZ以为什么叫内存泄露?直接crash是更严重的其他错误
------解决方案--------------------
new delete 一一对应,你得在不用的时候释放掉new出来的内存。
------解决方案--------------------
------解决方案--------------------
+1
------解决方案--------------------
有new无delete ?
typedef struct _PER_IO_CONTEXT
{
OVERLAPPED Overlapped;
WSABUF wsabuf;
CHAR Buffer[MAX_IO_BUFFER_SIZE];
CHAR BufferSecond[MAX_IO_BUFFER_SIZE];
int nSecondOfs;
int nTotalBytes;
int nSentBytes;
int IOOperation;
int nWaitIO;
} PER_IO_CONTEXT, * LPPER_IO_CONTEXT;
typedef struct _PER_SOCKET_CONTEXT
{
SOCKET m_socket;
int nIndex;
_PER_IO_CONTEXT IOContext[2];
int dwIOCount;
} PER_SOCKET_CONTEXT, *LPPER_SOCKET_CONTEXT;
struct OBJECTSTRUCT
{
int m_Index;//编号
struct _PER_SOCKET_CONTEXT* PerSocketContext;
};
typedef OBJECTSTRUCT * LPOBJ;
OBJECTSTRUCT gObj[1000];
for ( int n = 0; n< 1000; n++)
{
memset(&gObj[n], 0, sizeof(OBJECTSTRUCT));
//debug模式下就是说此行内存泄漏,因为1000此循环所以泄漏1000次...
gObj[n].PerSocketContext = new _PER_SOCKET_CONTEXT;
//
//
}
gObj[n].PerSocketContext = new _PER_SOCKET_CONTEXT;
//debug模式下就是说此行内存泄漏,因为1000此循环所以泄漏1000次
我看不出来有啥问题啊,有懂的大大来说说
------解决方案--------------------
------解决方案--------------------
new delete 一一对应,你得在不用的时候释放掉new出来的内存。
------解决方案--------------------
for ( int n = 0; n< 1000; n++)
{
delete gObj[n].PerSocketContext;
}
------解决方案--------------------
+1
------解决方案--------------------
有new无delete ?