`
fpwjp
  • 浏览: 45979 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

动态内存分配

    博客分类:
  • C++
阅读更多

运算符new用于动态分配内存,其一般的语法如下:

new <数据类型>[<整型表达式>]

其中<数据类型>可以是基本数据类型、结构等。它表示要分配与<数据类型>相匹配的内存空间。<整型表达式>表示要分配内存单元的个数(以该种数据类型的长度为单位),可以省略,其默认值1。new运算符返回所分配内存单元的起始地址,因此需要把该返回值赋值给一个指针变量。如果当前内存没有足够的空间可分配,则new运算符返回NULL,并抛出一个运行异常。

以下是使用new运算符为简单变量分配内存的例子

 

int *pNum=new int;                                //为整型变量(其指针为pNum)分配内存空间

float *px=new float;                               //为单精度变量(其指针为px)分配内存空间

 

new运算可用来创建一个动态数组,如下所示.

 

char *pBuffer=new char[256];                 //为字符串分配内存空间

int *pA=new int[size];                             //创建动态数组pA,可键盘输入size的值

student *stu=new student[num];           //创建student结构动态数组stu

 

运算符delete用于释放new运算所分配的内存空间,其一般语法形式如下:

 

delete <指针变量>;

 

例如:

 

delete pNum;

 

如果要释放一个动态数组所占用的内存空间,应采用如下形式:

 

delete []pA;

 

例:著名Fibonacci数列的定义是:F(0)=F(1)=1,F(n)=F(n-1)+F(n-2)。利用动态数组求Fibonacci数列的前n项。

利用动态数组求Fibonacci数列的前n项

 

#include <iostream.h>
#include <stdlib.h>

void main()
{
	int *f,n;
	cout <<"Please input n=?";
	cin >> n;
	f=new int[n+1];		//为动态数组f分配n+1个内存单元
	if(f==0||n<1)
	{
		cout <<"Heap Error or Input Error!\n";
		exit(1);
	}
	f[0]=f[1]=1;
	cout <<f[0]<<endl<<f[1]<<endl;
	for(int i=2;i<n;i++)
	{
		f[i]=f[i-2]+f[i-1];
		cout << f[i] << endl;
	}

	delete []f;		//释放动态数组f所占的内存空间
}

 

new运算符所创建变量的初始值是任意的,在程序中可以使用赋值运算为创建的变量赋值。也可以利用new运算分配内存同时进行初始化,如下所示。

pi=new int(100);                                    //*pi单元的初始值为100,区别:oi=new int[100]

分享到:
评论

相关推荐

    【LINUX】关于动态内存分配的理解

    在Linux操作系统下,动态内存分配是软件开发中一项非常重要的技术,它允许程序在运行时分配内存空间,满足各种复杂场景下的存储需求。动态内存分配主要用来解决传统数组(静态数组)所存在的问题。传统数组的长度...

    动态内存分配实验报告

    动态内存分配是编程中一种重要的内存管理方式,它允许程序在运行时根据需要动态地请求内存,而不是在编译期间预设固定的内存空间。在C++编程语言中,动态内存分配主要通过`new`和`delete`关键字来实现。本实验报告...

    操作系统动态内存分配实验报告 C++

    操作系统动态内存分配是计算机科学中一个关键的概念,尤其是在C++编程语言中。动态内存分配允许程序在运行时根据需要请求和释放内存,而非在编译时预设固定的内存大小。这种方式提高了程序的灵活性,但同时也增加了...

    动态内存分配算法实验报告

    ### 动态内存分配算法实验报告知识点解析 #### 一、实验题目与目的 - **实验题目**: 动态内存分配算法 - **实验目的**: - 深入理解动态分区存储管理中内存分配与回收的具体实现方法。 - 掌握动态分区管理的基本...

    动态内存分配模拟实验

    操作系统中的动态内存分配与回收,用户输入需要申请的内存,本程序动态帮用户分配回收

    动态内存分配算法(源代码&报告)DynamicAllocate

    动态内存分配是计算机科学中的一个重要概念,特别是在C和C++等编程语言中,它允许程序在运行时根据需要请求和释放内存。动态内存分配的主要优点是灵活性,它使得程序员能够控制内存的使用,避免了固定大小数组可能...

    C++动态内存分配.ppt

    C++动态内存分配是编程中一个重要的概念,它允许程序在运行时动态地分配和释放内存,解决了静态内存分配的一些局限性。在传统的程序设计中,变量和对象的内存分配通常由编译器在编译时决定,这限制了编程的灵活性。...

    动态内存分配的实现.pdf

    《动态内存分配的实现及其内部机制探析》 在计算机科学与编程领域中,动态内存分配是一项核心且复杂的技术,它允许程序在运行时按需请求和释放内存资源,极大地提高了程序的灵活性与效率。本文将深入探讨动态内存...

    动态内存分配到底为谁分配内存空间

    ### 动态内存分配原理与常见误区解析 #### 一、引言 在现代软件开发过程中,内存管理是一项至关重要的任务。特别是在C语言等需要手动管理内存的语言中,正确理解和运用动态内存分配技术显得尤为重要。本文将通过一...

    操作系统课程设计动态内存分配算法

    操作系统课程设计中的动态内存分配算法是一项关键的技能,它涉及到计算机系统如何有效地管理内存资源,以满足程序运行时的需求。动态内存分配允许程序在运行时请求和释放内存,而不是在编译时固定内存大小。这样的...

    深入讲解动态内存分配

    动态内存分配是编程中一种重要的概念,特别是在C++中,它允许程序在运行时根据需要动态地分配和释放内存。动态内存分配与静态内存分配不同,后者在编译时就已经确定了内存空间的大小和位置。 堆内存分配是动态内存...

    C和C++动态内存分配如堆,栈,数据段

    ### C和C++中的动态内存分配详解:堆、栈、数据段 #### 一、C语言中的内存区域 在C语言中,程序运行时的内存主要分为以下几个区域: 1. **栈区**:由编译器自动分配和释放。主要用于存放函数调用时的局部变量、...

    动态内存分配与回收 c/c++

    在编程领域,尤其是在C/C++中,动态内存分配与回收是一项关键技能,它涉及到程序运行时内存的管理和优化。动态内存分配允许程序在运行时根据需要请求和释放内存,而不是在编译时就预设固定的内存空间。这使得程序...

    动态内存分配和深复制

    本文档深入介绍了c++中的动态内存分配与深复制,可供c++初学者阅读和研究

    单片机动态内存分配模块代码

    因单片机的ram非常有限,本人在实际的工作中发现在编写单片机程序时能使用动态内存分配将对程序结构和提高程序复杂度有很大的帮助,但是编写动态内存分配代码因ram有限又不适宜采用动态链表的方式来管理内存,采用...

    操作系统动态内存分配(Java实现)

    用Java语言实现《操作系统》课程中“动态内存分配”实验的设计,采用首次使用算法(FIrst Fit)。

    基于java图形界面的内存管理相关算法实现---动态内存分配&&页面置换

    其中有两大类算法:动态内存分配和页面置换。动态内存分配包括首次适应算法,最佳适应算法,最坏适应算法,循环首次适应算法;页面置换包括"Optimal", "FIFO", "LRU", "NRU", "改进Clock"等算法。

    08_03_C_03_动态内存分配

    08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态内存分配08_03_C_03_动态...

Global site tag (gtag.js) - Google Analytics