C++ 高级数据类型(四)—— 动态内存分配

本文介绍了C++中的动态内存分配,包括操作符new和delete的使用,以及ANSI-C中的动态内存管理函数malloc、calloc、realloc和free。讨论了动态内存分配与静态数组的不同,并强调了在分配和释放内存时检查空指针的重要性。
摘要由CSDN通过智能技术生成

到目前为止,我们的程序中我们只用了声明变量、数组和其他对象(objects)所必需的内存空间,这些内存空间的大小都在程序执行之前就已经确定了。但如果我们需要内存大小为一个变量,其数值只有在程序运行时 (runtime)才能确定,例如有些情况下我们需要根据用户输入来决定必需的内存空间,那么我们该怎么办呢?

答案是动态内存分配(dynamic memory),为此C++ 集成了操作符new 和delete。

  操作符 new 和 delete 是C++执行指令。本节后面将会介绍这些操作符在C中的等价命令。

 

 

操作符new 和new[ ]

操作符new的存在是为了要求动态内存。new 后面跟一个数据类型,并跟一对可选的方括号[ ]里面为要求的元素数。它返回一个指向内存块开始位置的指针。其形式为:

pointer = new type

或者

pointer = new type [elements]

第一个表达式用来给一个单元素的数据类型分配内存。第二个表达式用来给一个数组分配内存。

例如:

int * bobby;
bobby = new int [5];

在这个例子里,操作系统分配了可存储5个整型int元素的内存空间,返回指向这块空间开始位置的指针并将它赋给bobby。因此,现在bobby 指向一块可存储5个整型元素的合法的内存空间,如下图所示。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值