new的作用是从自由存储为 类 的对象或对象数组分配内存,并将已适当分类的非零指针返回到对象。
比如:char * pchar= new char[10]
delete pchar
例子中动态分配了10个char类型的内存给了pchar,来构成一个数组。需要注意的是,分配数组采用[] ,如果只是单个的只要new char就可以了。
注意事项:
(1)使用 delete 运算符可解除分配使用 new 运算符分配的内存。而且new和delete是成对出现的。只出现一个是错误的或不规范的写法,即使能编译通过,也会有安全隐患,可能会造成内存泄露;
(2)使用的new与delete要相同。也就是说如果你在 new表达式中使用了 [],你必须在对应的 delete 表达式中使用 []。如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中使用 []。
(3)使用 new 为 C++ 类对象分配内存时,将在分配内存后调用对象的构造函数。所以如果是自己写的类的话,最好自己写个构造函数,这样会比较好。
new不需要添加头文件,可以直接使用。
new头文件中主要是一些new *** 作符的声明和重载,iostream是C++中特定的输入输出流 *** 作以及一些其他常用函数和 *** 作符的声明。里面其实就是包含了new头文件的内容,一般只需要在C++程序开头加上这两句代码就可以了。不需要再另外加上new
#include<iostream>using namespace std
另外在C++中包含iostream头文件的做法有些微妙:带.h的和不带.h的iostream在使用时也是不一致的,带.h的一般作用域属于全局的,可以直接引用,但是不带.h的作用域属于std名字空间。建议直接使用不带.h的iostream并使用标准名字空间。这样比较符合标准而且少敲几个字。方便!
C++作为C语言的更上一层,所以在很多方面都采取了兼容C语言的方式,这一点就属于其一。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)