摘要: 1.new的执行过程:(1)通过operator new申请内存(2)使用placement new调用构造函数(简单类型忽略此步)(3)返回内存指针2. new和malloc的比较:(1)new失败时会调用new_handler处理函数,malloc不会,失败时返回NULL(2)new能通过placement new自动调用对象的构造函数,malloc不会(3)new出来的东西是带类型的,malloc是void*,需要强制转换(4)new是C++运算符,malloc是C标准库函数3. delete的执行过程:(1)调用析构函数(简单类型忽略此步)(2)释放内存4.delete和free的比较 阅读全文
posted @ 2013-04-22 15:50 busyfruit 阅读(2912) 评论(0) 推荐(0) 编辑
摘要: “new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{ int i;public: A(int _i) :i(_i*_i) {} void Say() { printf("i=%d/n", i); }};//调用new:A* pa = new A(3 阅读全文
posted @ 2013-04-22 15:49 busyfruit 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 关于最大字段和,已有4中方法对其进行求解,现对其进行扩展,得到两个扩展的问题: 一、最大子矩阵问题 1、问题描述:给定一个m行n列的子矩阵A,试求出矩阵A的一个子矩阵,使其各元素之和为最大。 2、求解策略:对该问题,如果用穷举法求解,时间复杂度将为O(m2n2),利用其为最大字段和问题的扩展,将其划归成最大字段和问题,然后再用最大字段和的最优方法进行求解,则可降低时间复杂到O(m2n) 。即先长度为m的维度上求出第i行到第j行每一个的元素和存储到一个n维的数组中,再对该数组进行最大字段和的动态规划法求解,求出结果。 3、程序如下所示:float maxSum2(float (*a)... 阅读全文
posted @ 2013-04-22 15:39 busyfruit 阅读(1620) 评论(0) 推荐(0) 编辑