如何实现动态内存分配?
- 内容介绍
- 相关推荐
本文共计523个文字,预计阅读时间需要3分钟。
0.+ 介绍:在C++中,程序的内存空间分为两部分:堆和栈。栈:在函数中声明的所有变量都存储在栈上。堆:程序运行时动态分配的内存空间,用于存储未在栈上声明的变量。在C++中,可以通过new和delete操作符来管理堆内存。
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; }
参考:
www.runoob.com/cplusplus/cpp-dynamic-memory.html
本文共计523个文字,预计阅读时间需要3分钟。
0.+ 介绍:在C++中,程序的内存空间分为两部分:堆和栈。栈:在函数中声明的所有变量都存储在栈上。堆:程序运行时动态分配的内存空间,用于存储未在栈上声明的变量。在C++中,可以通过new和delete操作符来管理堆内存。
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; }
参考:
www.runoob.com/cplusplus/cpp-dynamic-memory.html

