void*指针void关键字表示“空类型”的概念。但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西.void*表示“空类型指针”,与void不同,void*表示“任意类型的指针”或表示“该指针与一地址值相关,但是...
分类:
编程语言 时间:
2014-10-16 16:13:22
阅读次数:
467
在C/C++编程中经常会申请内存,而对内存的申请释放操作有两套方法: new、delete 与malloc、free。他们的使用最好是成对使用,不要去混搭---这可不是时尚界哦。如下是这两组方法的异同或区别:
1、new、delete是c++中的操作符,malloc、free是C中的一个函数,它们都可用于申请动态内存和释放内存。
2、new
不止是分配内存,而...
分类:
编程语言 时间:
2014-10-15 16:07:11
阅读次数:
155
一、C++程序内存分配1)在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数结束是,这些存储单元自动被释放。栈内存的分配运算内置于处理器的指令集中,一般采用寄存器来存取,效率很高但是分配的内存容量有限。2)从堆上分配,亦称动态内存分配。程序在运行时malloc或new任意多的内存,...
分类:
编程语言 时间:
2014-10-14 22:07:39
阅读次数:
287
动态内存分配本讲内容存储区划分堆内存分配函数其他内存分配函数内存操作函数1.内存区划栈区inta=3堆区malloc(255)静态存储区staticfloath=1.36f常量区“lanou”代码区intgetCount(){...}自定义函数位于栈顶main函数位于栈底main函数既是程序的入口,也是程序的出口。s..
分类:
其他好文 时间:
2014-10-14 11:33:31
阅读次数:
192
在C++中,动态内存分配是一把双刃剑,一方面,直接访问内存地址提高了应用程序的性能,与使用内存的灵活性;另一方面,由于程序没有正确地分配与释放造成的例如野指针,重复释放,内存泄漏等问题又严重影响着应用程序的稳定性。
人们尝试着不同的方案去避免这个问题,比较常用的如智能指针,自动垃圾回收等,这些要么影响了应用程序的性能,要么仍然需要依赖于开发者注意一些规则,要么给开发者带来了另外一些很丑陋...
分类:
其他好文 时间:
2014-10-13 18:15:19
阅读次数:
232
内存: 分为五个区域栈区-----------系统分配以及回收内存.函数体内创建的变量存在栈区堆区------------由用户分配和回收,如果用户忘记回收 可能会导致内存不够用, 程序退出时,堆内存由系统回收常量区-------------用于存放常量的内存区域静态区 -------------定...
分类:
移动开发 时间:
2014-10-13 17:52:31
阅读次数:
181
深入C++ new/delete,malloc/free解析
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存
2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编...
分类:
编程语言 时间:
2014-10-09 15:29:28
阅读次数:
153
内存可以分为动态内存和静态内存;动态分配是在栈中分配的,静态分配是在堆中分配;“栈”和”堆“的区别在本质上只是操作系统分配内存时,分配的方式不用,从而形成“栈”,”堆“;“堆”是以堆排序的方式分配的内存,“栈”是以压栈、出栈方式分配;定义: 一种可以实现“先进后出”的存储结构;类比于“杯子”;...
分类:
其他好文 时间:
2014-10-09 14:06:33
阅读次数:
199
11.为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符。
显然,由于动态内存分配,绝对会有深浅拷贝的问题,要重写拷贝构造函数,使其为深拷贝,才能实现真正意义上的拷贝。这是我理解的关于要声明拷贝构造函数的原因。
而对于赋值操作符,类似的道理。
A b = a;
b = a;对于上述两种形式,上面调用的是复制构造函数,而下面才是 赋值操作符=。赋值与复制很相似,缺省的操作都是将...
分类:
编程语言 时间:
2014-10-07 21:51:04
阅读次数:
197