accept()-Socket重载Accept,内存泄漏

问题描述

Socket重载Accept,内存泄漏

Socket在监听时,重载Accept函数,要重新New一个Socket,小弟不知道在哪里释放它,结束程序时老是有内存泄漏,求大神指教啊!
贴上代码:
void CListenSocket::OnAccept(int nErrorCode)
{

try
{
    CServerSocket *s=new CServerSocket();
    Accept(*s);
    s->mwnd = mwnd;
}
catch(CException *pEx)
{
}

CSocket::OnAccept(nErrorCode);

}
提示内存泄漏为此行代码:
CServerSocket *s=new CServerSocket();

解决方案

在该套接字结束时shutdown或者closesocket,消灭之。

解决方案二:

没有close掉吧,

解决方案三:

close掉就行了啊

解决方案四:

这是局部变量,不方便你访问,声明一个可以get到的socket,在你需要的时候delete掉

解决方案五:

把他挂到外部,最好是可以自己需要的时候就获得,这样方便delete

时间: 2024-10-31 05:29:39

accept()-Socket重载Accept,内存泄漏的相关文章

socket通信accept语句执行太长(几百毫秒),会丢失数据怎么解决?

问题描述 socket通信accept语句执行太长(几百毫秒),会丢失数据怎么解决? WSADATA data; //定义WSADATA结构体对象 WORD w = MAKEWORD(2, 0); //定义版本号码 ::WSAStartup(w, &data); //初始化套接字库 SOCKET s, s1; //定义连接套接字和数据收发套接字句柄 s = ::socket(AF_INET, SOCK_STREAM, 0); //创建TCP套接字 sockaddr_in addr, addr2;

分析Python中的内存泄漏

  分析Python中的内存泄漏 引子 之前一直盲目的认为 Python 不会存在内存泄露, 但是眼看着上线的项目随着运行时间的增长 而越来越大的内存占用, 我意识到我写的程序在发生内存泄露, 之前 debug 过 logging 模块导致的内存泄露. 目前看来, 还有别的地方引起的内存泄露. 经过一天的奋战, 终于找到了内存泄露的地方, 目前项目 跑了很长时间, 在业务量较小的时候内存还是能回到刚启动的时候的内存占用. 什么情况下不用这么麻烦 如果你的程序只是跑一下就退出大可不必大费周章的去查

如何在Linux操作系统下检测内存泄漏

1.开发背景: 在 Windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名.行号以及内存大小.该功能是 MFC Framework 提供的内置机制,封装在其类结构体系内部. 在 Linux 或者 Unix 下,我们的 C++ 程序缺乏相应的手段来检测内存信息,而只能使用 top 指令观察进程的动态内存总额.而且程序退出时,我们无法获知任何内存泄漏信息.为了更好的辅助在 lin

如何在linux下检测内存泄漏

1.开发背景 在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名.行号以及内存大小.该功能是 MFC Framework 提供的内置机制,封装在其类结构体系内部. 在 linux 或者 unix 下,我们的 C++ 程序缺乏相应的手段来检测内存信息,而只能使用 top 指令观察进程的动态内存总额.而且程序退出时,我们无法获知任何内存泄漏信息.为了更好的辅助在 linu

一个跨平台的 C++ 内存泄漏检测器

内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧.在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏.在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性.附加开销和性能都不是很理想.本文实现一个极易于使用.跨平台的C++内存泄漏检测器.并对相关的技术问题作一下探讨. 基本使用 对于下面这样的一个简单程序test.cpp: 我们的基本需求当然是对于该程序报告存在两处内存泄漏.要做到这点的话,非常简单,只要

c++-C++中这样写会不会内存泄漏,有没有好的实现方法

问题描述 C++中这样写会不会内存泄漏,有没有好的实现方法 template class Foo { public: Foo(T T_val); Foo& operator=(const Foo& f); virtual ~Foo(); const T& getTval(); private: const T T_val; }; template Foo::Foo(T T_val = NULL):T_val(T_val) { ; } template Foo::~Foo() {}

运算符重载-C++ 操作符重载的内存释放问题

问题描述 C++ 操作符重载的内存释放问题 =操作符重载,给复构造函数进行赋值时的代码如下: MyString & MyString::operator =(const MyString &str) { if(this == &str) return *this; delete []m_pData; //**???????????????????????????? ** m_pData = NULL; m_pData = new char(strlen(str.m_pData) +

Node.js中内存泄漏分析

内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.如果内存泄漏的位置比较关键,那么随着处理的进行可能持有越来越多的无用内存,这些无用的内存变多会引起服务器响应速度变慢,严重的情况下导致内存达到某个极限(可能是进程的上限,如 v8 的上限:也可能是系统可提供的内存上限)会使得应用程序崩溃. 传统的 C/C++ 中存在野指针,对象用完之后未释放等情况导致的内存泄漏.而在使用虚拟机执行的语言中如 Java.JavaScript 由于使用了 GC (Garbag

分析、调试内存泄漏的应用程序

<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:宋体; pan