C++浅谈new和delete
来源:互联网 发布:p5.js使用手册 编辑:程序博客网 时间:2024/06/15 03:56
new:
可以用C++提供的new运算符来分配内存。程序员要告诉new,需要为哪种数据类型分配内存,new将找到一个长度正确的内存块,并返回该内存块的地址。我们要做的是把该返回地址赋给合适的指针变量。如:
int *p=new int;
new int代表需要能够存储int的合适的内存块。根据数据类型不同,new确定需要多少字节的内存块。
也可以使用new来创建动态数组。并且可以根据运行时,用户提供的输入信息,来决定数组的大小。如果不用new,即通过普通声明来定义数组,则程序在编译时便将为它分配内存空间,无论在之后的运行过程中有没有用到,它都占用了一定的内存。在编译时给数组分配内存叫静态联编。而使用new,可以在运行时再确定数组的长度,这叫动态联编,因此叫做动态数组。
int *p=new [10];
用new分配数组内存空间,可以把指针变量p当成数组名字,所有数组表示法访问元素都适用。即p[0]代表数组第一个元素,p[1]代表数组第二个元素。p[i]与*(p+i)是等价的。
delete:
delete p;
这将释放p指向的内存,其中p是之前定义的指针变量,且为该指针变量new了一个某种数据类型的内存空间。delete只是释放p指向的内存,并没有删除p。可以将p重新指向一个新的被分配的内存空间。new和delete必须配对使用。而且只能delete被new分配的空间。即以下用法是不安全的:
int a=1; int *p=&a; delete p;
释放单个变量内存和数组内存语法是不一样的。
int *p=new int; int *q=new int[10]; delete p; delete []q;方括号表示应释放整个数组,而不只是指针指向的那个元素。
使用new和delete时的一些规则:
1.不要使用delete释放不是由new分配的内存,这会引发意想不到的错误。
2.不要用delete释放用一块内存两次。
3.对空指针使用delete是安全的。
4.若要释放数组内存空间,则要加[]。
阅读全文
0 0
- 浅谈new和delete
- C++浅谈new和delete
- C++:new和delete
- new和delete【C++】
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
- Pat 1021. 个位数统计 (15)
- 分治算法---最大子数组
- luoguP3385 【模板】负环(dfs_Bellman)
- Python中非字符串变量公共方法
- 数据结构上机实验学习体会
- C++浅谈new和delete
- Android面试常客--四大组件之BroadcastReceiver
- 堆和栈的区别
- win10自带移动热点启动 手机访问本地服务器
- FiddlerScript详解
- 判断文件是否存在的另一种方法 _access 和 _waccess
- 开博客的目的
- Tomcat内存溢出解决方案
- Imageloader