C++
文章平均质量分 71
fangcaoliantianya
这个作者很懒,什么都没留下…
展开
-
堆和栈的区别
堆和栈的主要的区别有以下几点: 1、管理方式不同:栈是由编译器自动管理,无需我们手工控制;堆释放工作由程序员控制,容易产生memory leak。 2、空间大小不同:一般在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M。 3、能否产生碎片不同:堆频原创 2015-08-12 09:33:02 · 215 阅读 · 0 评论 -
malloc/free与new/delete的区别
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。其区别在于: 1、new 是c++中的操作符,malloc是c 中的一个函数 2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数 3、内存泄漏对原创 2015-08-12 11:20:10 · 227 阅读 · 0 评论 -
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
VS2010每次在建立Win32 Console Project时会出现“error LNK1123” 错误,网上推荐的一种解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入单 “是”改为“否”即可,但是这种解决办法每次新建一个项目都要这样设置一次。 个人觉得这个问题最好的解决办法是:1、先将电脑里所有的cvtres.exe全部搜索出来删除;2、重新下载一个新的cvtre原创 2015-08-11 14:30:36 · 198 阅读 · 0 评论 -
指针问题
char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char **cp[] = { c+3, c+2, c+1, c }; char ***cpp = cp; int main(void) { printf("%s", **++cpp); printf("%s", *--*++cpp+3); printf("%s", *cpp[原创 2015-08-14 14:35:38 · 333 阅读 · 0 评论 -
两个栈模拟一个队列/两个队列模拟一个栈
1、用两个栈实现队列和用两个队列实现一个栈 解题思路: 插入操作在stack1中进行,删除操作在stack2中进行,如果stack2为空,则将stack1中的所有元素转移到stack2中。 代码: #include #include #include using namespace std; template class CQueue { public:原创 2015-08-17 16:38:51 · 636 阅读 · 0 评论 -
求二叉树中节点最大距离
问题定义 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 书上的解法 书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。 计算一个二叉树的最大距离有两个情况: 情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 路原创 2015-09-19 14:59:00 · 345 阅读 · 0 评论 -
递归和非递归实现链表反转
//思路为将节点从前到后依次放到表头,最后最后的节点到了最前面,最前面的节点到了最后面 ListNode * ReverseList(ListNode * head) { //如果链表为空或者链表中只有一个元素 if(head==NULL || head->m_pNext==NULL) return head; ListNode * p=head->m_pNext;原创 2015-09-19 16:06:57 · 226 阅读 · 0 评论