初始化IOCP的一个结构体时,编译器谈内存泄漏,泄漏代码已列出,请大大指点

初始化IOCP的一个结构体时,编译器说内存泄漏,泄漏代码已列出,请大大指点
本帖最后由 eco12345 于 2014-02-16 22:08:59 编辑

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次

我看不出来有啥问题啊,有懂的大大来说说
------解决方案--------------------
初始化IOCP的一个结构体时,编译器谈内存泄漏,泄漏代码已列出,请大大指点你new了却没delete,这不就是最典型的内存泄露,不然LZ以为什么叫内存泄露?直接crash是更严重的其他错误
------解决方案--------------------
new delete 一一对应,你得在不用的时候释放掉new出来的内存。
------解决方案--------------------

for ( int n = 0; n< 1000; n++)
{
   delete gObj[n].PerSocketContext;
}

------解决方案--------------------
引用:

for ( int n = 0; n< 1000; n++)
{
   delete gObj[n].PerSocketContext;
}

+1
------解决方案--------------------
有new无delete ?