Forráskód Böngészése

添加tcp服务器端代码

Flynn 8 éve
szülő
commit
433d48d533
2 módosított fájl, 175 hozzáadás és 0 törlés
  1. 32 0
      common/Src/debug/win32_crtdbg.cpp
  2. 143 0
      common/Src/debug/win32_crtdbg.h

+ 32 - 0
common/Src/debug/win32_crtdbg.cpp

@@ -0,0 +1,32 @@
+/*
+ * Copyright: JessMA Open Source (ldcsaa@gmail.com)
+ *
+ * Version	: 2.3.18
+ * Author	: Bruce Liang
+ * Website	: http://www.jessma.org
+ * Project	: https://github.com/ldcsaa
+ * Blog		: http://www.cnblogs.com/ldcsaa
+ * Wiki		: http://www.oschina.net/p/hp-socket
+ * QQ Group	: 75375912
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include "stdafx.h"
+#include "win32_crtdbg.h"
+
+#if defined _DEBUG && defined _DETECT_MEMORY_LEAK
+
+__dbg_impl::CDebugEnv __dbgEnv;
+
+#endif // _DEBUG && defined _DETECT_MEMORY_LEAK

+ 143 - 0
common/Src/debug/win32_crtdbg.h

@@ -0,0 +1,143 @@
+/*
+ * Copyright: JessMA Open Source (ldcsaa@gmail.com)
+ *
+ * Version	: 2.3.18
+ * Author	: Bruce Liang
+ * Website	: http://www.jessma.org
+ * Project	: https://github.com/ldcsaa
+ * Blog		: http://www.cnblogs.com/ldcsaa
+ * Wiki		: http://www.oschina.net/p/hp-socket
+ * QQ Group	: 75375912
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#pragma once
+
+#if defined _DEBUG && defined _DETECT_MEMORY_LEAK
+
+#ifdef new
+	#undef new
+#endif
+
+#ifdef delete
+	#undef delete
+#endif
+
+#ifndef _CRTDBG_MAP_ALLOC
+	#define _CRTDBG_MAP_ALLOC
+#endif
+
+#include <crtdbg.h>
+
+namespace __dbg_impl
+{
+	class CDebugEnv
+	{
+	public:
+		CDebugEnv()
+		{
+			::_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
+			::_CrtMemCheckpoint(&s1);
+		}
+
+		~CDebugEnv()
+		{
+			::_CrtMemCheckpoint(&s2);
+
+			if (::_CrtMemDifference( &s3, &s1, &s2))
+			{
+				TRACE("!! Memory stats !!\n");
+				TRACE("----------------------------------------\n");
+				::_CrtMemDumpStatistics(&s3);
+				TRACE("----------------------------------------\n");
+			}
+		}
+
+	private:
+		_CrtMemState s1, s2, s3;
+	};
+
+	static __dbg_impl::CDebugEnv __dbgEnv;
+}
+
+#pragma warning(push)
+#pragma warning(disable: 4595)
+
+inline void* __cdecl operator new(size_t nSize, const char* lpszFileName, int nLine)
+{
+	// __dbg_impl::CGuard guard;
+	return ::_malloc_dbg(nSize, _NORMAL_BLOCK, lpszFileName, nLine);
+}
+
+inline void* __cdecl operator new[](size_t nSize, const char* lpszFileName, int nLine)
+{
+	return operator new(nSize, lpszFileName, nLine);
+}
+
+inline void* __cdecl operator new(size_t nSize)
+{
+	return operator new(nSize, __FILE__, __LINE__);
+}
+
+inline void* __cdecl operator new[](size_t nSize)
+{
+	return operator new(nSize, __FILE__, __LINE__);
+}
+
+inline void* __cdecl operator new(size_t nSize, const std::nothrow_t&)
+{
+	return operator new(nSize, __FILE__, __LINE__);
+}
+
+inline void* __cdecl operator new[](size_t nSize, const std::nothrow_t&)
+{
+	return operator new(nSize, __FILE__, __LINE__);
+}
+
+inline void __cdecl operator delete(void* p)
+{
+	// __dbg_impl::CGuard guard;
+	::_free_dbg(p, _NORMAL_BLOCK);
+}
+
+inline void __cdecl operator delete[](void* p)
+{
+	operator delete(p);
+}
+
+inline void __cdecl operator delete(void* p, const char* lpszFileName, int nLine)
+{
+	operator delete(p);
+}
+
+inline void __cdecl operator delete[](void* p, const char* lpszFileName, int nLine)
+{
+	operator delete(p);
+}
+
+inline void __cdecl operator delete(void *p, const std::nothrow_t&)
+{
+	operator delete(p);
+}
+
+inline void __cdecl operator delete[](void *p, const std::nothrow_t&)
+{
+	operator delete(p);
+}
+
+#pragma warning(pop)
+
+#define new new(__FILE__, __LINE__)
+
+#endif // _DEBUG && defined _DETECT_MEMORY_LEAK