动态内存分配(C++)
- C++中的动态内存分配
- C++中通过new关键字进行动态内存分配
- C++中的动态内存申请是基于类型进行的
- delet关键字用于内存释放
//变量申请 Type*pointer = new Type; //.... delete pointer; //数组申请 Type*pointer = new Type[N]; //.... delete[] pointer;
#include "stdio.h" int main() { //new可以初始化 int *p = new int(100); //*p = 5; *p = *p + 5; printf("p=%p\n",p); printf("*p=%d\n",*p); delete p; p = new int[10]; for (int i = 0; i < 10;i++) { p[i] = i + 1; printf("p[%d]=%d\n",i,p[i]); } delete p; return 0; }运行结果:
:~ $ g++ main.cpp
:~ $ ./a.out
p=0x15c4058
*p=105
p[0]=1
p[1]=2
p[2]=3
p[3]=4
p[4]=5
p[5]=6
p[6]=7
p[7]=8
p[8]=9
p[9]=10
- new关键字与malloc函数的区别
- new关键字是C++的一部分
- malloc是由C库提供的函数
- new以具体类型为单位进行内存分配
- malloc以字节为单位进行内存分配
- new在申请单个类型变量时可进行初始化
- malloc不具备内存初始化的特性