动态内存分配和撤销方式剖析
在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了运算符new和delete来取代malloc和free函数。注意:new和delete是运算符,不是函数,因此执行效率高。虽然与C语言兼容,C++仍保留malloc和free函数,建议使用new和delete运算符,不要用malloc和free函数。
New运算符一般格式:new 类型 [初值]
用new分配数组空间时不能指定初值。如果由于内存不足等原因无法正常分配空间,则new会返回一个空指针NULL,可以根据该指针的值判断分配空间是否成功。
Delete运算符一般格式:
Delete[ ] 指针变量
例如:开辟空间存放一个结构体变量:
/*
*test3.cpp
*
* Created on: 2012-4-10
* Author: David
*/
#include<iostream>
#include<string>
usingnamespace std;
struct Student
{
stringname;
int num;
char sex;
};
int main()
{
Student*p; //定义指定结构体类型Student的数据的指针变量
p=new Student; //用new运算符开辟一个存放Student型数据的空间
p->name="David";//向结构体变量的成员赋值
p->num=12345;
p->sex="m";
cout<<p->name<<endl<<p->num<<endl<<p->sex<<endl;//输出各个参数
delete p; //撤销该空间
return 0;
}
在上面的代码中,我们并没有定义结构体变量,而是定义了一个基类型为Student的指针变量p,用new开辟一段空间用来存放Student类型的变量p。空间的大小由系统根据Student结构体大小自动算出,无需指定。执行new得到一个指向Student类型数据的指针值即起始地址,把这个起始地址赋给p。我们可以通过p来访问该空间,并对该空间内的成员赋值操作。用delete撤销该空间。
在动态分配/撤销空间时,通常将这两个运算符和结构体结合使用。要访问用new开辟的结构体空间,无法直接通过变量名进行,只能通过指针p进行访问。
如果要建立一个动态链表,必须从第一个结点开始,逐个开辟结点并输入各结点数据,通过指针建立起前后相链的关系。
分享到:
相关推荐
进程创建、控制与撤消 ...2、同时模拟内存空间为作业分配内存空间,并把结果用图形形象地表示出来,同样通过终端输出。 3、按进程的优先级的顺序撤消进程,同时通过终端显示PCB的撤消过程和内存的释放过程。
1,内存管理 用到在分配内存,不负责回收内存,具体就分配一块内存禁止读写,设置读写异常程序,当那块内存被读写时会进入异常程序在里面分配内存再继续运行。 2,操作管理 包括操作撤销和操作恢复。主要是以行为...
*7.1.7 动态分配和撤销内存的运算符new和delete 7.2 共用体 7.2.1 共用体的概念 7.2.2 对共用体变量的访问方式 7.2.3 共用体类型数据的特点 7.3 校举类型 7.4 用typedef声明类型 习题 第3篇 基于对象的程序设计 第...
*7.1.7 动态分配和撤销内存的运算符new和delete 7.2 共用体 7.2.1 共用体的概念 7.2.2 对共用体变量的访问方式 7.2.3 共用体类型数据的特点 7.3 校举类型 7.4 用typedef声明类型 习题 第3篇 基于对象的程序设计 第...
9.7.3 撤销服务器登录的访问权限和授予的角色 9.8 控制数据库访问和管理 9.8.1 为登录分配访问权限和角色 9.8.2 为多个登录分配角色 9.8.3 创建标准的数据库角色 9.8.4 创建应用程序数据库角色 9.8.5 删除数据库用户...
9.7.3 撤销服务器登录的访问权限和授予的角色 9.8 控制数据库访问和管理 9.8.1 为登录分配访问权限和角色 9.8.2 为多个登录分配角色 9.8.3 创建标准的数据库角色 9.8.4 创建应用程序数据库角色 9.8.5 删除数据库用户...
9.7.3 撤销服务器登录的访问权限和授予的角色 9.8 控制数据库访问和管理 9.8.1 为登录分配访问权限和角色 9.8.2 为多个登录分配角色 9.8.3 创建标准的数据库角色 9.8.4 创建应用程序数据库角色 9.8.5 删除数据库用户...
第11章 指针、链表和动态内存分配 89 11.1 地址和指针 89 11.2 指针变量的定义和指针变量的基类型 90 11.3 指针变量的赋值及基本操作 91 11.3.1 给指针变量赋地址值 91 11.3.2 给指针变量赋“空”值 91 11.3.3...
6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 ...
6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 ...
5.3 Oracle的内存分配和使用 第6章 Buffer Cache与Shared Pool原理 6.1 Buffer Cache原理 6.2 Shared Pool的基本原理 第7章 重做(Redo) 7.1 Redo的作用 7.2 Redo的原理 7.3 Redo...
5.3 Oracle的内存分配和使用 第6章 Buffer Cache与Shared Pool原理 6.1 Buffer Cache原理 6.2 Shared Pool的基本原理 第7章 重做(Redo) 7.1 Redo的作用 7.2 Redo的原理 7.3 Redo...
5.3 Oracle的内存分配和使用 第6章 Buffer Cache与Shared Pool原理 6.1 Buffer Cache原理 6.2 Shared Pool的基本原理 第7章 重做(Redo) 7.1 Redo的作用 7.2 Redo的原理 7.3 Redo...
提供实际场景案例分析和故障诊断实验 SQL Server专家的呕心力作,数据库管理员的实战宝典,全面、深入地剖析SQL Server2008新特性,结构独特,实例丰富,操作性强。 编辑本段 目录 第Ⅰ部分 SQL Server 2008...
提供实际场景案例分析和故障诊断实验 SQL Server专家的呕心力作,数据库管理员的实战宝典,全面、深入地剖析SQL Server2008新特性,结构独特,实例丰富,操作性强。 编辑本段 目录 第Ⅰ部分 SQL Server 2008...
提供实际场景案例分析和故障诊断实验 SQL Server专家的呕心力作,数据库管理员的实战宝典,全面、深入地剖析SQL Server2008新特性,结构独特,实例丰富,操作性强。 编辑本段 目录 第Ⅰ部分 SQL Server 2008...
提供实际场景案例分析和故障诊断实验 SQL Server专家的呕心力作,数据库管理员的实战宝典,全面、深入地剖析SQL Server2008新特性,结构独特,实例丰富,操作性强。 编辑本段 目录 第Ⅰ部分 SQL Server 2008...
5.3 Oracle的内存分配和使用 204 5.3.1 诊断案例一:SGA与SWAP 205 5.3.2 诊断案例二:SGA设置过高导致的系统故障 208 5.3.3 诊断案例三:如何诊断和解决CPU高度消耗(100%)问题 212 第6章 Buffer Cache与...