C++动态内存的分配与释放 引用
2015-01-10 10:01
78 查看
new 运算符
1、指针变量 = new 数据类型, 如:int *p; p=new int;
2、new从内存中卫程序分配一块内存空间,并返回指向该内存的首地址,该地址存放于指针变量中
new
先分配内存,做复杂类型的构造
delete
释放
delete运算符
delete 指针变量; 如:delete p;
(1)用new获取内存空间,必须用delete进行释放
(2)对一个指针只能调用一次delete
(3)用delete运算符作用的对象必须是用new分配的内存间的首地址
注:C语言中有free()函数分配内存
new a;
delete []a;
指针变量 = new 数据类型(初始值)
例如上面提到的
p = new int;
*p = 5;
也可以写成
p = new int(5);
用new建立数据类型的变量
指针变量 = new 数据类型[数组大小];
如:int *p = new int[5];
此时指针变量指向第一个数组元素的地址。使用new分配数组时,不能提供初始值。
作用域运算符:
通常情况下,如果全局变量与局部变量同名,那么局部变量在其作用域内具有较高的优先权
C语言规定只能在变量作用域内使用该变量,不能使用其他作用域的变量。而C++中提供了作用域运算符::,他能指定所需要的作用域。
注意:
不能用::访问函数中的局部变量
在C++语言中作用域运算符::还可以限定类的成员。
引用
在C++语言中引用用于在程序的不同部分使用两个以上的变量名指向同一地址,不占用内存空间,引用申明的时候必须初始化,一旦初始化之后不能再对他赋另外的值,而指针不同第一个,指针是有空间的,第二个指针申明的时候可以不初始化然后指针一旦被赋值之后,还可以在赋值的。
1、指针变量 = new 数据类型, 如:int *p; p=new int;
2、new从内存中卫程序分配一块内存空间,并返回指向该内存的首地址,该地址存放于指针变量中
new
先分配内存,做复杂类型的构造
delete
释放
delete运算符
delete 指针变量; 如:delete p;
(1)用new获取内存空间,必须用delete进行释放
(2)对一个指针只能调用一次delete
(3)用delete运算符作用的对象必须是用new分配的内存间的首地址
注:C语言中有free()函数分配内存
new a;
delete []a;
#include <iostream> using namespace std; void main() { int *p; p = new int; *p = 5; cout << *p; delete p; }可以在用new分配内存的同时进行初始化。使用形式为:
指针变量 = new 数据类型(初始值)
例如上面提到的
p = new int;
*p = 5;
也可以写成
p = new int(5);
用new建立数据类型的变量
指针变量 = new 数据类型[数组大小];
如:int *p = new int[5];
此时指针变量指向第一个数组元素的地址。使用new分配数组时,不能提供初始值。
作用域运算符:
通常情况下,如果全局变量与局部变量同名,那么局部变量在其作用域内具有较高的优先权
C语言规定只能在变量作用域内使用该变量,不能使用其他作用域的变量。而C++中提供了作用域运算符::,他能指定所需要的作用域。
注意:
不能用::访问函数中的局部变量
在C++语言中作用域运算符::还可以限定类的成员。
#include <iostream> using namespace std; float a=2.4; //全局变量 void main() { int a = 8; //局部变量 cout<<a<<endl; cout<<::a<<endl; //:: }
引用
在C++语言中引用用于在程序的不同部分使用两个以上的变量名指向同一地址,不占用内存空间,引用申明的时候必须初始化,一旦初始化之后不能再对他赋另外的值,而指针不同第一个,指针是有空间的,第二个指针申明的时候可以不初始化然后指针一旦被赋值之后,还可以在赋值的。
#include <iostream> using namespace std; void main() { int num = 50; int &ref = num; ref += 10; cout<<"num"<<num<<endl; cout<<"ref"<<ref<<endl; num += 40; cout<<"num"<<num<<endl; cout<<"ref"<<ref<<end; }
相关文章推荐
- c++==与c内存分配释放及引用的对比(3)
- 晓说智能指针shared_ptr为何可以实现跨模块分配和释放内存
- C++ STL中的vector的内存分配与释放
- 频繁分配释放内存导致的性能问题的分析
- ZFS磁盘空间管理(分配、释放原理)
- 一种O(0)的资源分配及释放算法
- WCF 添加服务引用 HTTP 请求已超过为 00:00:00 分配的超时。为此操作分配的时间可能是较长超时
- C++ primer 摘要《extern、变量函数声明与定义、头文件、动态分配与释放》20090119
- C语言 二维数组(指针)动态分配和释放
- linux c 分配释放内存 sbrk分配,brk释放
- 关于内存分配与释放的试验
- VC资源分配、释放表
- C/C++——C和C++怎样分配和释放内存,区别是什么?
- windows内存池 一线程分配 一线程释放 无锁 安全?
- 动态分配和释放二维数组
- 浅析值类型与引用类型的内存分配[转载]
- 快速分配释放内存
- C++ STL中的vector的内存分配与释放
- c语言中内存的动态分配与释放(多维动态数组构建)
- [笔试] C和C++动态内存分配和释放的区别