发布时间:2013-01-10 21:05:59
在C和C++语言开发中,指针、内存一直是学习的重点。因为C语言作为一种偏底层的中低级语言,提供了大量的内存直接操作的方法,这一方面使程序的灵活度最大化,同时也为bug埋下很多隐患。 因此,无论如何,我们都要对内存有一个清晰的理解。 一、对内的分配 32位操作系统支持4GB内存的连续访问,但通常把内存分为两个2GB的空间,每个进程在运行时最大可以使用2GB的私有内存(0x00000000—0x7FFFFFFF)。即理论上支持如下的大数组:char szBuffer[2*1024*1024*1024]; 当然,由于在实际运行时,程序还有代码段、临时变量段、动态内存申请等,实际上是不可能用到......【阅读全文】
发布时间:2012-12-11 20:24:19
1:malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2:对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。3:因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。总结:1:当我们使......【阅读全文】
发布时间:2012-12-09 22:55:10
深拷贝和浅拷贝一定是很多C++菜鸟比较难以理解的一个知识点,很多老鸟估计也不是很明白其内部的原理。其实这涉及到C 内部模型的两个概念,即Default Memberwise Initialization 和bitwise copy semantics。这两个名字是不是感觉很怪,下面我们就来慢慢分析。 Default Memberwise Initialization: 这是C 模型的内部一种实现方案,其原理就是对于同一类的两个对象直接的赋值进行的暗箱操作。说白了,就是将一个对象的内存空间中的数据,原封不动的拷贝出另一份来填满另一个对象的内存......【阅读全文】