自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

发展是曲折的但也是前进的

人生路漫漫 只能上下求索

  • 博客(61)
  • 资源 (3)
  • 收藏
  • 关注

转载 Windows/Linux下C/C++内存泄露检测工具

一 Window下的内存泄露检测(以VC++环境为例)灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。Visual Leak Detector(VLD)是一款用于Visual

2016-12-30 14:11:45 349

转载 DllImport System.DllNotFoundException 问题分析与解决

自己实验了一下,感觉以下几种解决办法是可行的:方法一:在类似C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:msvcm80d.dllmsvcp80d.dllmsvcr80d.dllMicrosoft.VC

2016-12-29 10:41:01 6875

转载 C语言使用pthread多线程编程(windows系统)

我们进行多线程编程,可以有多种选择,可以使用WindowsAPI,如果你在使用GTK,也可以使用GTK实现了的线程库,如果你想让你的程序有更多的移植性你最好是选择POSIX中的Pthread函数库,我的程序是在Linux下写的,所以我使用了Pthread库运行之前需要做一些配置: 1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release

2016-12-28 21:24:31 2269

转载 C++中智能指针的设计和使用

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235     智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对

2016-12-28 21:15:16 289

转载 C/C++内存泄漏及检测(三)

方法一、1、头文件:#define _CRTDBG_MAP_ALLOC#include #include  注意 #include 语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。  2、在添加了上面所示语句之后,可以通过在程序中包括以下语句来转储内存泄漏信息:_CrtDumpMemoryLeaks();//在最后一个语句添加或通

2016-12-26 15:52:16 468

转载 C/C++内存泄漏及检测(二)

内存管理:_CrtDumpMemoryLeaksCrtDumpMemoryLeaks()就是显示当前的内存泄漏。     注意是“当前”,    也就是说当它执行时,     所有未销毁的对象均会报内存泄漏。       因此尽量让这条语句在程序的最后执行。它所反映的是检测到泄漏的地方。一般用在MFC中比较准确,在InitInstance里面调用_CrtDump

2016-12-26 15:51:24 801

转载 C/C++内存泄漏及检测(一)

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一

2016-12-26 15:32:29 522

转载 64位进程调用32位dll的解决方法

在Windows7 X64,VS2008环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题。相关资料:微软公司的官方网站针对这个问题描

2016-12-26 11:38:19 12740

转载 Thread.Abort方法的误区

大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Thread.Abort方法后线程就立刻停止了吗? 答案是:不是! 下面我们来解释一下Abort方法是如何工作的。因为公用语言运行时管理了所有的托管的线程,同样它能在每个线程内抛出异常。Abor

2016-12-26 10:58:21 5446

转载 C语言中利用setjmp和longjmp做异常处理

错误处理是任何语言都需要解决的问题,只有不能保证100%的正确运行,就需要有处理错误的机制。异常处理就是其中的一种错误处理方式。1 过程活动记录(Active Record)C语言中每当有一个函数调用时,就会在堆栈(Stack)上准备一个被称为AR的结构,抛开具体编译器实现细节的不同,这个AR基本结构如下所示。 每当遇到一次函数调用的语句,C编译器都会产生出汇编代码来在

2016-12-23 17:16:18 487

转载 内存申请和释放及堆连续

C语言有两种内存申请方式:1、静态申请:当你声明全局或静态变量的时候,会用到静态申请内存。静态申请的内存有固定的空间大小。空间只在程序开始的时候申请一次,并且不再释放(除非程序结束)。2、自动申请:当你声明自动变量的时候会使用自动申请。函数参数、局部变量都属于自动变量。这些变量空间在程序执行致相关语句块申请,离开语句块时释放。  还有一种内存申请方式:动态内存申请。C语言变

2016-12-21 22:54:10 2299

转载 C程序内存管理

C程序的内存管理熟悉Java语言的肯定知道,Java中内存管理是由虚拟机帮助我们完成的,在C/C++中可不是这样,程序员需要自己去分配和回收内存空间。本文记录了C程序可执行文件的存储结构、在内存中的存储结构等方面的内容。以下C程序所使用的编译器版本是GCC 4.4.7。从一个C程序说起文件的结构对于以下这段Hello.c程序再熟悉不过了[cp

2016-12-21 21:42:58 469

转载 VS2010进行远程调试方法总结

假设现在有A、B两台PC机。VS2010安装在A机器上,也就是说A机器是开发使用的机器。B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP)说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误。如果出现无法附加到进程的错误、无法连接到设备.请按照步骤13进行设置。 1、根据vs2010安装目录倒找Remot

2016-12-20 22:48:40 419

转载 vs2010设置堆栈大小

在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分:1、栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M,总之是一个编译时就确定的常数),如果申请

2016-12-20 22:45:12 1544

转载 关于.NET编译的目标平台(AnyCPU,x86,x64)

1.关于.NET编译的目标平台(AnyCPU,x86,x64)(转) 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU 。 下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧。在VisualStudio中,在编译设置中有如下选项: x86: 将程序

2016-12-20 17:09:29 700

转载 编译c#项目,在项目属性中,平台与目标平台的区别是什么?

.NET编译、WOW64注册表访问、同时在X86和X64平台上部署应用程序[翻译文章,原文请参考:http://www.codeproject.com/Articles/51326/Net-Compilation-registry-accessing-and-application.aspx]多长的一个标题,不是吗?这是因为在一些情况下,你必需要做一大堆事情才能让你的.NE

2016-12-20 17:08:44 3308

转载 32位模式下C/C++程序可用最大内存

关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试Visual studio 10int* Test=new int[1024*1024*200];int* Test2=new int[1024*1024*200];申请1.6G内存.抛出:cpptest2.exe 中的 0x770e15ee 处有未经处理的异常: Micros

2016-12-20 16:30:47 908

转载 Java中JNI的使用详解第二篇:JNIEnv类型和jobject类型的解释

上一篇说的是一个简单的应用,说明JNI是怎么工作的,这一篇主要来说一下,那个本地方法sayHello的参数的说明,以及其中方法的使用首先来看一下C++中的sayHello方法的实现:[cpp] view plain copy JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHel

2016-12-19 11:13:48 520

转载 Java中JNI的使用详解第一篇:HelloWorld

今天开始研究JNI技术,首先还是老套路,输出一个HelloWorld:具体流程如下:在Java中定义一个方法,在C++中实现这个方法,在方法内部输出“Hello World",然后再回到Java中进行调用。分为以下步骤:第一步:在Eclipse中建立一个类:JNIDemo[java] view plain copypackage 

2016-12-19 11:09:45 646

转载 Socket编程(异步通讯)(Tcp,Udp)

上一章主要展示了Socket的Tcp\Udp两种协议下的基本通讯方式,属于同步通讯。至于一个服务器对应多个客户端,或者对应多个请求,我们采用的是多线程的方式来解决此问题。然而本章节我们将有更好的方式去实现它:Socket在Tcp\Udp两种协议下的异步通讯方式。基于Tcp协议异步:  BeginAccept方法和EndAccept方法  包含在System.Net.Sock

2016-12-17 15:14:34 4262 2

转载 C# 线程的挂起与恢复

AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoRes

2016-12-16 13:18:25 4591

转载 C#-struct实例字段的内存布局(Layout)和大小(Size)

转自:http://blog.csdn.NET/masterft/article/details/1699009struct实例字段的内存布局(Layout)和大小(Size)        在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中

2016-12-16 09:22:24 716

转载 关于在dll中申请内存,外部释放的问题

在一次面试中突然被问到这个问题,当时还真不明白,回来在网上找到了说法: 因为malloc/free,new/delete都是调用HeapAlloc/HeapFree来实现来实现内存分配是释放的。查看Windows的API可以看到,这两个函数都需要一个Heap的HANDLE做为参数。CRT库采用了全局变量来保存这个HANDLE。如果是CRT静态链接,CRT库的代码会链接到各个

2016-12-15 19:16:19 1818

转载 C# 释放C++DLL 中申请的内存空间

问题描述:C#调用C++的dll,传入一组数据,返回处理后的数据以及一些信息字段。但是,返回的内容是不定长的,也就是dll内部要进行动态内存申请。那么问题来了,C#怎么接收一个大小不确定的变量?使用完这些数据后,怎么在C#里面释放其内存?前一个问题的危险是,该段内存的大小,调用方事先是未知的不能进行初始化,这可能会导致缓冲区溢出问题。目前的解决方法只能够是调用方预先分配一个足够大的内存空间

2016-12-15 19:14:54 5833 1

转载 delete 和 delete []的真正区别

c++中对new申请的内存的释放方式有delete和delete[两种方式,到底这两者有什么区别呢?1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a;       

2016-12-15 18:31:59 327

转载 C#中标准Dispose模式的实现

需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类:  托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;  非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等;  毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式释放的托管资源,那么,就

2016-12-15 17:16:44 392

转载 Marshal.PtrToStructure是否发生内存拷贝

这样想,CLR是如何确保托管内存安全的?如果PtrToStructure没有拷贝的发生,托管对象被回收了是否会破坏非托管内存?释放非托管内存是否会影响托管对象?比如下面代码(查询远程桌面信息),WTSFreeMemory释放了由WTSEnumerateSessions负责准备的内存(记住托管世界并不知道该调用具体做了什么),如果没有拷贝,托管对象sessionInfo不就被破坏了?

2016-12-15 15:34:40 2641

转载 _stdcall,_cdecl区别

(1) _stdcall调用  _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。  WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题:  #define WINAPI _stdcall  按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如。

2016-12-15 14:40:26 231

转载 c++对象内存布局模型

转自:点击打开链接首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。 对于子类的子类,也是同样的原理。但是无论继承了多少个子类

2016-12-15 13:15:07 348

转载 C++虚函数及虚函数表解析

声明:  本文内容由自互联网资源(见参考资料)、个人的一些 C++ 学习感悟、个人实践整理而成。文章仅以技术学习和交流为目的。如果您发现了文中的错误,或者您有的不同的见解,可以给我留言或者给我发邮件,我们共同探 讨。如果您觉得我的文章侵犯到您的权益,请联系我(chinajiezhang@gmail.com),以便我做相应的处理。最后,如需转载,可不必标明 出处。但一定要全文转载,保证参考链接的

2016-12-15 12:56:58 305

转载 浅析TCP字节流与UDP数据报的区别

“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考!1、TCP打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。上面的例子中,往水池里倒

2016-12-15 09:48:31 698

转载 Socket编程 (连接,发送消息) (Tcp、Udp) - Part1

http://www.cnblogs.com/zengqinglei/archive/2013/04/27/3046119.html本篇文章主要实现Socket在Tcp\Udp协议下相互通讯的方式。(服务器端与客户端的通讯)  1.基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。  使用Tcp协议通讯需要具

2016-12-15 09:22:25 601

转载 关于Socket和NetWorkstream介绍

一.本文中介绍的程序设计及运行环境   (1).微软视窗2000 服务器版   (2)..Net Framework SDK Beta 2以上版本  二.服务器端程序设计的关键步骤以及解决办法:  在下面接受的程序中,我们采用的是异步阻塞的方式。  (1).首先要要在给定的端口上面创建一个"tcpListener"对象侦听网络上面的请求。当接收到连结请求后通

2016-12-14 18:23:13 2077 1

转载 UDP内网和外网连接通信的问题

如我内网的IP为:192.168.0.2,端口为3200,此时我想和外网的IP:220.120.123.42,端口为23654通信,从客户端发起请求,可以根据外网的IP和端口顺利找到服务器,这是单项通信,可是服务器给内网的机器发就困难了,不以为然的同学请先仔细考虑下再来拍砖。整个数据流的路途是这样的:我的内网IP和端口在经过我的网关之后,都会发生变化。可能会变为网关的外网如:124

2016-12-14 18:02:44 5825 3

转载 Socket编程中,阻塞与非阻塞的区别

阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当5个连接处理完闭之后,服务器退出.任何的在队列中的呼叫将会被取消.  非阻塞:非阻塞套接字是指执行此套接字的网络调用时

2016-12-14 17:49:59 605

转载 UDP的Socket发送数据,出现连续丢包现象(一)

UDP丢包原因一、主要丢包原因1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个

2016-12-14 16:42:14 11136 1

原创 Linq.Expression

ParameterExpression a = Expression.Parameter(typeof(int), "i");   //创建一个表达式树中的参数,作为一个节点,这里是最下层的节点            ParameterExpression b = Expression.Parameter(typeof(int), "j");            BinaryExpres

2016-12-14 13:49:11 1077

转载 RTP协议

RTP(Real-time Transport Protocol)是由IETF开发的实时传输协议,可以在面向连接或无连接的下层协议上工作,通常和UDP协议一起使用。RTP的工作机理与RSVP不同,主要实现一种端到端的多媒体流同步控制机制,既不需要事先建立连接,也不需要中间节点的参与,为其保留资源。在网络带宽充足的情况下,RTP具有一定的带宽调控能力,保证端到端的多媒体流同步。在网络带宽不足时,RT

2016-12-13 18:05:21 2842

转载 C#编程UDP通信过程中出现【远程主机强迫关闭了一个现有的连接0x80004005】的解决方法

一直郁闷 UDP不是面向非连接的?? 在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误:System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。最初的最愚蠢的解决方法就是,在catch语句里不做任何动作,让监听端口函数继续运行。但这并非一个长久之计,后来在网

2016-12-12 15:24:00 11935 2

转载 更改pip源至国内镜像,显著提升下载速度

经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的烦恼。网上有很多可用的源,例如豆瓣:http://pypi.douban.com/simple/                                          清华

2016-12-11 20:36:24 1039

敏捷软件开发 中文版

agile software development

2013-09-27

精通Direct3D图形与动画程序设计

Direct3D 图形与动画 精通,属于入门级别的吧 ,别人推荐的,是一本不错的书

2012-06-23

TINDEM线性内插不确定性模型

TINDEM线性内插不确定性的随机过程模型

2010-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除