
C/C++ 基础
文章平均质量分 77
怎么连话都说不清楚
这个作者很懒,什么都没留下…
展开
-
手把手教你调试Linux C++ 代码
软件调试本身就是一项相对复杂的活动,他不仅要求调试者有着清晰的思路,而且对调试者本身的技能也有很高的要求。Windows下Visual Studio为我们做了很多的工作,使初学者基本上可以获得一个所见即所得的调试体验,相对来说也比较容易上手。然而在linux平台下,一切都显得有些不同,倒不是说GDB有多难,只是对于习惯了visual studio的人来说刚开始会有些不适应。然而对于那些在win转载 2016-06-16 17:02:41 · 2620 阅读 · 0 评论 -
C++内存管理详解(六)
9、new/delete 的使用要点运算符new使用起来要比函数malloc简单得多,例如:int *p1 = (int *)malloc(sizeof(int) * length); int *p2 = new int[length]; 这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成转载 2012-11-20 19:55:58 · 365 阅读 · 0 评论 -
C++内存管理详解(三)
4、指针参数是如何传递内存的?如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,test函数的语句getmemory(str, 200)并没有使str获得期望的内存,str依旧是null,为什么?void getmemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num);转载 2012-11-20 19:49:45 · 343 阅读 · 0 评论 -
C++内存管理详解(一)
C++内存管理。程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,stat转载 2012-11-20 19:45:27 · 420 阅读 · 0 评论 -
C++编程技巧推荐
C++语言是一个面向对象的语言,使用C++编写的代码更加简捷、高效,更具可维护性和可重用性。但是很多人使用了C++语言后却感到C++与C编程没有什么区别。这其实是由于对C++语言的特点和特色理解和使用不够造成的。事实上,没有任何一个程序员使用C语言的编程效率可以超过C++语言的。 一、使用new和delete进行动态内存分配和释放 运算符new和delete是C++新增的过算符,提转载 2012-11-09 17:05:49 · 461 阅读 · 0 评论 -
解读sizeof操作符
0. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,转载 2012-11-24 09:35:17 · 468 阅读 · 0 评论 -
一道有趣的GOOGLE面试题
//GOOGLE面试题//一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。//By MoreWindows (http://blog.youkuaiyun.com/MoreWindows)#include const int NO_REPEAT_FLAG = -1;int FindRepeatNumberInArray转载 2012-11-27 18:08:24 · 458 阅读 · 0 评论 -
C/C++中内存区域划分大总结
指针是c/c++学习一个比较让人头痛的问题,在程序设计过程中,指针也往往是产生隐含bug的原因。下面就来谈谈指针的应用以及需要注意的一些问题,里面也许就有你平时没有注意到的问题,希望能帮助各位读者理解好指针。一、我们先来回忆一下指针的概念吧,方便下面的介绍指针是存放地址值的变量或者常量。例如:int a=1;&a就表示指针常量(“&”表示取地址运算符,也即引用)。int *b,b表转载 2012-11-20 20:00:17 · 343 阅读 · 0 评论 -
C++内存管理详解(五)
7、内存耗尽怎么办?如果在申请动态内存时找不到足够大的内存块,malloc和new将返回null指针,宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。(1)判断指针是否为null,如果是则马上用return语句终止本函数。例如:void func(void) { a *a = new a; if(a == null) { return; }转载 2012-11-20 19:54:12 · 390 阅读 · 0 评论 -
C++内存管理详解(四)
5、杜绝“野指针”“野指针”不是null指针,是指向“垃圾”内存的指针。人们一般不会错用null指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。 “野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为null指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为nu转载 2012-11-20 19:52:40 · 386 阅读 · 0 评论 -
C/C++变量在内存中的分布
先写一个测试程序:#include #include int g_i = 100;int g_j = 200;int g_k, g_h;int main(){ const int MAXN = 100; int *p = (int*)malloc(MAXN * sizeof(int)); static int s_i = 5; static int s_j = 10; s转载 2012-11-27 18:13:10 · 394 阅读 · 0 评论 -
C++内存管理详解(二)
3、指针与数组的对比c++/c程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危转载 2012-11-20 19:47:54 · 367 阅读 · 0 评论 -
12个有趣的C语言问答
0,gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。#include int main(void) { char buff[10]; memse转载 2012-11-17 19:21:49 · 469 阅读 · 0 评论 -
三十分钟掌握STL
三十分钟掌握STLSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。要点STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。STL另一个重转载 2012-11-14 09:16:15 · 540 阅读 · 0 评论 -
STL学习小结
STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最转载 2012-11-14 09:23:40 · 691 阅读 · 0 评论