C++
文章平均质量分 68
wander754085
@简称CC大牛 http://weibo.com/whatcanorcdo
展开
-
STL中容器使用自定义排序时出现assert
使用STL容器时(此次我遇到的问题是使用STL的优先级队列priority_queue时出现的),如果要放入的内容非基本类型(自定义对象或结构体)时,一般需要使用自定义的排序方法,我的自定义排序是这样写的: struct cmp { bool operator()(const Edge* e1,const Edge* e2) { if(e1->weight >= e2->we原创 2012-11-14 11:04:59 · 1019 阅读 · 0 评论 -
C/C++中内存释放及内存泄露的检测
今天突发奇想写了一段很奇怪的代码,Node对象的数组我是这样写的: Node* p = (Node*)malloc(sizeof(Node)*10); free(&p[2]); 从直观上来想象似乎是没有问题的,但却出现了_CrtIsValidHeapPointer的断言,按理说出现了这个问题应该是因为要释放的堆内存越界,但其实是另有原因,再看另一段代码:原创 2012-11-15 15:42:18 · 890 阅读 · 0 评论 -
C++中的智能指针(Smart Pointer)
当C++中类的成员为指针类型时,对该类的对象进行拷贝或者赋值时,多个对象副本的指针成员就会指向同一块动态申请的内存,如何来释放指针指向的内存将成为一个难以解决的问题: class A { public: A() { p = new int[5]; } ~A() { delete p; } v原创 2012-12-21 17:31:18 · 680 阅读 · 0 评论 -
C++内存池的极简版实现
当在一个函数中需要大量使用new来申请临时用的数组或对象时,用完之后需要对每一个new出来的数组进行释放,特别当一个函数特别长的时候,(如在我厂的系统中,1000行的函数是经常的),要去找出之前写的每一个new然后写对应的delete,这是极不美观且易漏掉的,因此使用自己的内存管理方案是很有好处的: 1.程序员可以尽情地new,不用负责释放 2.使用内存池一次性申请原创 2013-01-17 17:47:40 · 788 阅读 · 0 评论