动态内存分配(C++)

  • C++中的动态内存分配
  1. C++中通过new关键字进行动态内存分配
  2. C++中的动态内存申请是基于类型进行的
  3. 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函数的区别
  1. new关键字是C++的一部分
  2. malloc是由C库提供的函数
  3. new以具体类型为单位进行内存分配
  4. malloc以字节为单位进行内存分配
  5. new在申请单个类型变量时可进行初始化
  6. malloc不具备内存初始化的特性