摘要: 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。现实世界就是这样的,作为一个c/c++程序员,内存泄漏是你心中永远的痛。不过好在现在有许多工具能够帮助我们验证内存 阅读全文
posted @ 2013-11-30 15:19 xingrun 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 浅谈C++内存泄漏及其检测工具http://wenku.baidu.com/link?url=1DGkOOvd_ITZyB8IHAwfhCOx2tfO6id8UfuyQkAMHZU6sasaAXzekgP-AxSMZzSMN3UzbVXjnAt8EUxFb2ki2_4C5gcetEOWGSNJ-O6OIcK 阅读全文
posted @ 2013-11-30 15:10 xingrun 阅读(163) 评论(0) 推荐(0) 编辑
摘要: _CrtDumpMemoryLeaks()的作用2007-03-22 10:11CrtDumpMemoryLeaks()就是显示当前的内存泄漏。 注意是“当前”, 也就是说当它执行时, 所有未销毁的对象均会报内存泄漏。 因此尽量让这条语句在程序的最后执行。它所反映的是检测到泄漏的地方。一般用在MFC中比较准确,在InitInstance里面调用_CrtDumpMemoryLeaks。C++内存分配与释放均由用户代码自行控制,灵活的机制有如潘多拉之盒,即让程序员有了更广的发挥空间,也产生了代代相传的内存泄漏问题。对于新手来说,最常犯的错误就是new出一个对象而忘记释放,对于一般小应用程序来说,一 阅读全文
posted @ 2013-11-30 15:09 xingrun 阅读(943) 评论(0) 推荐(0) 编辑
摘要: 内存泄露,C++通常是指new出来的内存没有delete掉。在你的代码里边,new了一块内存,然后马上就delete,自然就没有内存泄露了(呃……其实我也不确定啦,因为你用的是delete,而不是delete[])。而@Miao在评论里面说的,把x换成指针,在构造函数里new一块内存给它,10秒钟内系统就要卡死。如果没有在析构函数里面delete,自然,就会发生上一段所说的,new出来的内存没有delete掉,内存泄露啰!系统也就由此卡死。那么x换成指针类型后,析构函数里面也用了delete,是不是就不会发生内存泄露呢?不是的。因为“new MyClass[10]”的时候,MyClass的构造 阅读全文
posted @ 2013-11-30 15:08 xingrun 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 首先我们先来了解一下MFC中的CPtrArray类,他可以说是CObject类型指针对象的集合。通过intAdd(CObject*newElement);注意参数是一个指针类型)可以向集合中添加元素。首先我们定义一个CPtrArray类型的对象。CPtrArray pArray;//他是一个全局对象先设定一个举例的类类型。如:1234567891011classA{public:A(inti){a = i;}~A(){}public:inta;};现在我们需要在某个函数中要实现将一个A类型对象数据加入到一个CPtrArray对象中。此函数func1()如下:1234567voidfunc1() 阅读全文
posted @ 2013-11-30 15:00 xingrun 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 今天在程序的中有一段class Quackable : QuackObservable,结果一直出现error c2243:"类型转换" 转换存在,但无法访问。后来发现只要改成class Quackable : public QuackObservable 即可。c++默认的是private继承,无法进行转换,检查一下是否继承后面都有一个public 阅读全文
posted @ 2013-11-30 12:49 xingrun 阅读(577) 评论(0) 推荐(0) 编辑