加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C++——动态分配内存

发布时间:2020-12-16 09:11:32 所属栏目:百科 来源:网络整理
导读:? 0.? 介绍 在C++中,程序的内存空间分成两部分,堆和栈。 栈:在函数中声明的所有变量都存在栈里。 堆:是程序中未使用的内存,用来在程序运行时动态分配内存空间。 ? 在C++中可以通过new和delete操作符来控制内存空间的申请和释放。 ? new:申请一段内存空
?

0.? 介绍

在C++中,程序的内存空间分成两部分,堆和栈。

栈:在函数中声明的所有变量都存在栈里。
堆:是程序中未使用的内存,用来在程序运行时动态分配内存空间。
?
在C++中可以通过new和delete操作符来控制内存空间的申请和释放。
?
new:申请一段内存空间,并创建对象,返回内存空间的起始地址。
delete:删除分配的内存空间,防止内存泄漏。
?

1. new

?
new type_name
?
new申请的内存空间可以是任意内置数据类型,也可以是自定义的结构体或者类。
double* pvalue = NULL; // 初始化为 null 的指针 
pvalue = new double; // 为变量请求内存

2. delete

当某个动态申请内存的对象不再使用了,用delete释放分配的内存空间。
delete pvalue; // 释放 pvalue 所指向的内存
?

3. 为数组动态分配内存

char* pvalue = NULL; // 初始化为 null 的指针 
pvalue = new char[20]; // 为变量请求内存 
delete [] pvalue;// 删除 pvalue 所指向的数组
?
如果是二维数组
int **array // 假定数组第一维长度为 m, 第二维长度为 n // 动态分配空间 
array = new int *[m]; 
for( int i=0; i<m; i++ ) 
{ 
  array[i] = new int [n] ; 
} //释放 
  for( int i=0; i<m; i++ )
 { 
  delete [] arrary[i]; 
} 
delete [] array;

 

4. 为自定义对象分配内存空间

#include <iostream>
using namespace std;
 
class Box
{
   public:
      Box() { 
         cout << "调用构造函数!" <<endl; 
      }
      ~Box() { 
         cout << "调用析构函数!" <<endl; 
      }
};
 
int main( )
{
   Box* myBoxArray = new Box[4];
 
   delete [] myBoxArray; // 删除数组
   return 0;
}

  

?参考:

https://www.runoob.com/cplusplus/cpp-dynamic-memory.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读