使用new和delete

xiaoxiao2021-02-28  20

一、基础知识

变量是编译时分配内存的有名称的内存。 而指针只是为可以通过名称直接访问的内存提供了一个别名。指针的真正用武之地在于在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。

首先new找到一块长度正确的内存块,并返回该内存的地址; 然后程序员的责任是将该内存地址赋值给一个指针。如: 方式一: int * pn=new int; delete pn; 方式二: int higgens; int * pt=&higgens; delete pt;

第一种情况下只能通过指针来访问; 第二种情况可以通过higgens来访问该int.


为一个数据对象(可以是结构,也可以是基本类型)获得并指定分配内存的通用格式如下:

typeName * pointer_name = new typeName ; ... delete pointer_name ;

二、使用new创建动态数组

int *ps = new int [10]; //创建一个包含10个int 元素的数组。 delete [] ps; //对于new创建的数组,使用delete [] 来释放。

new运算符返回第一个元旦的地址,改地址被赋值给指针ps. 方括号[]告诉程序,应该释放整个数组,而不仅仅是指针指向的元素。 为数组分配内存的通用格式如下:

typeName * pointer_name = new typeName [num_elements] ; ... delete [] pointer_name ;

三、使用new和delete时要遵循的规则

如果在new表达式中使用了[],必须在相应的delete表达式中使用[]。如果在new表达式中不使用[],一定不要在相应的delete表达式中使用[]。确保“同时使用、相同形式”。不要使用delete释放不是new分配的内存。不要使用delete释放同一个内存两次。使用new[]为数组分配的内存一定要使用delete[]释放,不能使用delete;new为单个对象分配的内存一定使用delete来释放。对空指针delete是安全的。
转载请注明原文地址: https://www.6miu.com/read-2400182.html

最新回复(0)