随笔分类 -  C++

摘要:一个由C/C++编译的程序除了存放函数二进制代码的程序代码段(code段)外,数据占用的内存大致分为以下几个部分: 1、栈区(stack) 存放局部变量、函数参数、返回数据、返回地址等。系统自动分配释放,其操作方式类似于数据结构中的栈。 需要注意的有三点: 第一,退栈后销毁进栈时定义数据,请看下面这 阅读全文
posted @ 2017-08-24 13:16 sold_out 阅读(1171) 评论(0) 推荐(0)
摘要:C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。 ★ 相同点: 1. 都是地址的概 阅读全文
posted @ 2017-08-24 12:28 sold_out 阅读(293) 评论(0) 推荐(0)
摘要:野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。 野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。 造成野指针的 阅读全文
posted @ 2017-08-24 12:22 sold_out 阅读(1481) 评论(0) 推荐(0)
摘要:1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。 程序的运行结果是: A Hello 为什么在a.c中定义的全 阅读全文
posted @ 2017-08-24 12:10 sold_out 阅读(104563) 评论(11) 推荐(17)
摘要:C++中值传递、指针传递、引用传递的总结 指针传递和引用传递一般适用于:函数内部修改参数并且希望改动影响调用者。对比值传递,指针/引用传递可以将改变由形参“传给”实参(实际上就是直接在实参的内存上修改,不像值传递将实参的值拷贝到另外的内存地址中才修改)。指针/引用传递的另外一种用法是:当一个函数实际 阅读全文
posted @ 2017-08-24 12:05 sold_out 阅读(1035) 评论(0) 推荐(0)
摘要:为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 阅读全文
posted @ 2017-08-24 12:01 sold_out 阅读(439) 评论(0) 推荐(1)
摘要:C++内存区域分为5个区域。分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。 栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区。里面通常是局部变量,函数参数等。 堆:由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new对应一个delete。如果 阅读全文
posted @ 2017-08-24 11:01 sold_out 阅读(2740) 评论(0) 推荐(0)
摘要:相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同 malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自 阅读全文
posted @ 2017-08-24 10:59 sold_out 阅读(311) 评论(0) 推荐(0)